トップページ⇒tech
1001コメント291KB

■MFC相談室 mfc11.dll■

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/

関連リンクは >>2-10 の辺り。
0449デフォルトの名無しさんNGNG
>>448
神頼み的な思想を植えつけない細心の注意が必要
0450デフォルトの名無しさんNGNG
CFrameWnd すら使うかどうか
習得パス設計との緊密なマッチングで決めること
TABオーダーでバグられた位でグラつく知識はダメ
0451デフォルトの名無しさんNGNG
MFCはダメなライブラリの見本
0452デフォルトの名無しさんNGNG
>MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。

文句言うより他あたるのがアメ公
0453デフォルトの名無しさんNGNG
>>444
素直にAPIでやって下さい。
0454デフォルトの名無しさんNGNG
アメリカ人はコレ使うと決めたら他の選択肢捨てるよね
0455デフォルトの名無しさんNGNG
俺アメリカ人だけど、MFC自体捨てたよ
今はBCBで、バリバリ快調っす
0456デフォルトの名無しさんNGNG
面接で渋られたときのゴネ方が内容的にまるで違う
0457デフォルトの名無しさんNGNG
>>456
どんなの?
0458デフォルトの名無しさんNGNG
日本人:イオナズン
アメリカ人:ダディクール
0459デフォルトの名無しさんNGNG
>>445
アメリカ人向けの糞本は翻訳されないだけだろ
そんなのに著作料と翻訳料払うぐらいなら日本人に直接書かせる罠
0460デフォルトの名無しさんNGNG
原書読めば笑えるのも呆れかえるのも、いっぱいある。
0461デフォルトの名無しさんNGNG
VC.NET2003(MFC)の質問です。
ダイアログを作る時にエディットボックスなどと関連付けするメンバ変数を作ろうとしているのですが、
うちの環境ではなぜかメンバ変数追加ウィザードが動作しません。
手動でメンバ変数を書いた場合にエディットボックスどうやって関連付けすればいいのでしょうか?
0462デフォルトの名無しさんNGNG
>>461
アイテムをダブルクリックして駄目なら駄目なんだろ。
0463デフォルトの名無しさんNGNG
>>461
ダブルクリックするとエディタが開いてチェンジイベントの記述になります。
0464デフォルトの名無しさんNGNG
VCがおかしい→再インスコ
ウィザードがおかしい→テスト用プロジェクト作ってみる
手動がいい→サンプルをまねる
0465デフォルトの名無しさんNGNG
CList の入れ子ってできないでしょうか.
CList< CList< int, int >, CList< int, int > > みたいな.
0466デフォルトの名無しさんNGNG
VS.NET2003で新しいプロジェクト作成でMFCアプリケーションを作成したら、
ダイアログバーも生成されたので、リソースエディタでエディットコントロールを2つ
追加してコンパイルすると、ダイアログバー上にエディットコントロールが2つあって、
文字の入力等は問題なく出来るのですが、TABキーでフォーカスの移動をしようと
しても、1つ目のエディットコントロールにしか移動しません。

リソースのタブストップには両方ともチェックが入っているのですが、どうすれば
フォーカス移動が出来るようになるのでしょう?
0467デフォルトの名無しさんNGNG
>>466
タブオーダーは設定したのか?
0468466NGNG
>>467
設定してもだめ。

というか、設定してなくても、普通のダイアログならリソースエディタで貼り付けた
順に初期設定されてるから、意図したとおりにならずとも何がしかの順で移動して
くれると思うのですが、TABキーでは頑なに1つめのエディットコントロールから
離れようとしません。

クリックしてやるとちゃんと2つ目のエディットコントロールにフォーカス移動するん
ですが。

なんか、追加のコードがいるんでしょうか?
0469デフォルトの名無しさんNGNG
>なんか、追加のコードがいるんでしょうか?

普通はいらない。

というか、普通にウィザードでMFCアプリ作ってもダイアログバーなんか付いてこないと思うんだが。
0470466NGNG
>>469
プロジェクト作成時にReBarを使う設定にすると付いてくるようです。

んで、解決しました。ダイアログバーに割り当てられてるダイアログリソースの
ControlプロパティがデフォルトではFalseになっていたのでした。

プロジェクト生成時にこれくらいはTrueにしておいてほしかった・・・orz
0471デフォルトの名無しさんNGNG
あー、そういうのがあるのか。2003はインストールしただけでほとんど使っていないので気付かなかった。
それにしても、2003のリソースエディタのプロパティは使いにくいなあ。
無理矢理ダイアログバー作ろうといじってて、なかなかダイアログスタイル設定できずに苦労した。
何だよ「子」って
0472デフォルトの名無しさんNGNG
スレが汚れるので.NETの話題はお控えください。
0473デフォルトの名無しさんNGNG
>>472
スレのレベルが下がるので、VisualStudio.NETと.NET Frameworkを
混同している人はカキコを控えて下さい。
0474デフォルトの名無しさんNGNG
VC++.NETはMFC的には機能ダウンしてるしな
0475デフォルトの名無しさんNGNG
>>474
ウッソー?
機能アップしてるだろ。
例えばCStringはstd::basic_stringのようにテンプレートクラス化されて
使いやすくなってると思う。
0476474NGNG
>>475
書き方が悪かった。ライブラリじゃなくてIDEまわりね。
0477デフォルトの名無しさんNGNG
MFCライブラリはもろもろ良くなってるね
CStringはウニとS-JIS混在できるしね
IDEは.NETと共通化したから非共通部分が落とされたね
0478デフォルトの名無しさんNGNG
先輩にMFCをするより、SDKでガイガリやったほうがいいのができるっていわれたんだが、本当?
0479デフォルトの名無しさんNGNG
いいのができるかどうかは関係ない。
APIだけで作っても駄目な物は駄目
0480デフォルトの名無しさんNGNG
その先輩はMFC使えない、C++わからないだけってパターンが多い。
0481デフォルトの名無しさんNGNG
MFCって何から勉強すればいいんだ?
0482デフォルトの名無しさんNGNG
自分が必要とするところから。
0483デフォルトの名無しさんNGNG
習うより慣れろ。
0484デフォルトの名無しさんNGNG
CListView でレボートビューにした場合、ラベルを改行して
複数行で表示したいのですが、可能でしょうか。
0485デフォルトの名無しさんNGNG
Owner Drawでやるしかないんじゃない?
0486デフォルトの名無しさんNGNG
マルチします。すみません。
C++BuilderXでGUIアプリを作成する場合には
MFCは使えるのでしょうか?
また、フォームエディタは使用できるのでしょうか?
0487デフォルトの名無しさんNGNG
CListView で Owner Draw を使うのにはどうすればいいのでしょうか。
教えて君で申し訳ないです。
調べても調べがつかなかったもので。。
0488デフォルトの名無しさんNGNG
>>487
CodeGuruに行くとそういうサンプルが少なくとも二つは見つかるよ。
#つーか、見つけた。
OwnerDrawじゃなくてCustomDrawの手法ならGoogleで国内サイトを探すだけでいろいろ出てくると思う。
0489デフォルトの名無しさんNGNG
今から始めるならMFCはやめて.NETにしたほうがいい?
0490デフォルトの名無しさんNGNG
>>488
ありがとうございます。
とりあえず、CodeGuruから調べてみたいと思います。
0491デフォルトの名無しさんNGNG
俺はCodeProjectの方が好きだな・・・
0492デフォルトの名無しさんNGNG
CodeGuruはリニューアルしてから見づらいな・・・
0493デフォルトの名無しさんNGNG
>>489
「今から始める」という意味が「学習を始める」だったらMFCで良い。
「長大なプロジェクトを起こす」という意味なら.netを考慮する価値はあるかも。

つまりちょこちょこ作って今すぐ広い環境で動かすならMFCだな。
0494デフォルトの名無しさんNGNG
>>493
あー。まだ厨房なんで将来的なことも考えていただければ幸いです。
0495デフォルトの名無しさんNGNG
>>494
んじゃまず、ハードの基礎やってから、アセンブラ逝け。1年たったらまた恋。
0496デフォルトの名無しさんNGNG
漏れは、SDK だけでアプリ作れない香具師の MFC アプリは信用しないなあ。

……「アセンブリが解らない香具師のアプリは信用しない」と同じレベルかゴメンorz
0497デフォルトの名無しさんNGNG
何でもそうだが、知ってるやつ見えてるやつから見ると、知らないやつ見えてないやつは、危なっかしく感じる。
知らないやつ見ててないやつ自身は、なんの恐れも不安もない。
0498デフォルトの名無しさんNGNG
えーと、分裂症の方でしょうか?
0499デフォルトの名無しさんNGNG
SDKやってMFCすれば〜
0500デフォルトの名無しさんNGNG
MFCだかVBだか知らないんだけど、例えば某USB機器に付属してるソフト。
起動してすかさず他アプリケーションを前面に持って来て、
そのソフトが完全に起動し終わったのを確認してウィンドウをアクティブにすると
フッと、ウィンドウ上のボタンのフォーカスが切り替わる。
細かい事だけど、何やってんだよ (;´Д`) 怖いよ
0501デフォルトの名無しさんNGNG
レベルが低くて本当にこれから始めるっていうならなおさら、あんまり先のことは
考えずに、今できることをやって経験を積んでおくことを薦める。先々どうするかは
自分で経験して判断できるようになってから決めればよい。何もできないうちに
後のことを言っても始まらないからね。

現在一般に出回ってるシステム環境や、ツール、学習面での文書のこと考えたら
いきなり.netはやりづらいと思う。どうせ最初は小さいものしか作れないんだし、
何かしら使える機能のあるものを気軽に作って、プログラムすることの手順に慣れ
るのが先だろう。
0502489NGNG
一応Delphiとかはいろんなページ見ながらやってたんだけど
他の言語に移行したくなったんで、.NETかMFCがいいかなーと思ったたけです。
別にJavaやSDKでもいいんですが、アセンブラは必要なんでしょうか?
0503デフォルトの名無しさんNGNG
そんな「なんとなく」が理由なら自分で好きなのやれ。
0504デフォルトの名無しさんNGNG
>>502
必要って何のために?

仕事で必要かどうかは内容次第で、
具体的な就職先と配属先が決まらないと何とも言いようがない
けど、そんな理由に引きずられるだけな若手は「うちへ欲しい」タイプじゃない
泥縄方式のおんぶに抱っこで何ができるか甚だ疑問だからだ

言語であろうとデバイスあろうと、
特定のブツに対するマニュアル的な知識は泥縄でも徹底的ならそれでいい
もっと根本的なことで、こういう分野を切り開いていくことに対して
自発的な意思で行動しているか否かが肝心要の核心だ

で、アセンブラの話に戻ろう
アセンブラやってみたいか? 意味ねえと思うか?

おまえが答えるしかないことだ
0505489NGNG
>>504
アセンブラはやってみたくないけど、意味はあるとおもう。
既存の高級言語を使う場面とアセンブラを使う場面はどう違うのか説明してくれ。
0506デフォルトの名無しさんNGNG
>>505
特定のCPUの、特有の機能を使うとき
例: 特権命令

コードサイズまたは実行速度に定量的な条件があるとき
例: PIC
0507デフォルトの名無しさんNGNG
>>505
続き

既にアセンブラベースで進行中のプロジェクト
例: (軍機のため言えません)
0508デフォルトの名無しさんNGNG
最初にDelphiやると他のものが使えなくなってしまう。
そういう意味では最初に学ぶのはDelphi以外が良いと言うことになるのかも知れない。
0509デフォルトの名無しさんNGNG
>>502
> 一応Delphiとかは

「とか」ってなんだよ・・・
なんかこういう書きぶり続くとどうでも好きにすればとしか言いようないな
0510デフォルトの名無しさんNGNG
普通にCかC++から初め野菜って事で
0511デフォルトの名無しさんNGNG
>>508は典型的なマニュアル頭な人に多い症例
0512デフォルトの名無しさんNGNG
ここMFCのスレなのにDelphiの話題ばっかりで大丈夫?
他のスレで同じことするとスレ違いとかうるさく言われるのにね。
0513デフォルトの名無しさんNGNG
>>512
代理発言はしてやらない
0514デフォルトの名無しさんNGNG
今更言語談義が始まって呆れてる最中。
0515デフォルトの名無しさんNGNG
>>505
>アセンブラはやってみたくないけど

賛成も反対もする筋合いにないからどっちとも言わないが、
はっきりした意思があるなら邪念は捨てろ
0516デフォルトの名無しさんNGNG
卒業年次生にもなって何屋に【なる】のか決まってないなら
それはそれですることがあるはずだ
0517デフォルトの名無しさんNGNG
MFCなひとは、なんでDelphierや初心者言語話に、普通に答えてんの?
そこはスレが荒れるとこでしょ。やっぱMFCに愛着無いからかね。
0518デフォルトの名無しさんNGNG
単に楽をするためのライブラリィ程度しか考えていないよ、俺は
それと、暇つぶしにレスしているだけ
0519デフォルトの名無しさんNGNG
暇つぶしでスレ違いレスすんなタコ
0520デフォルトの名無しさんNGNG
Cスレで聞こうと思ったのでつが荒れてたので
こちらでおながいします。
MFCを使っているとoperator newをオーバーロード
して、デバッグのときにはメモリリークを検出してくれるので
助かっているのですが、MFCを使用しない場合は
みなさんどうしてますか?
自力でnewをオーバーロードしてるのでつか??
0521デフォルトの名無しさんNGNG
つーか、スレ違いな話題はスールしろよ!
0522489NGNG
>>508
父親にCから始めろと言われ、本を買ってくれたのでCから始めました。

他スレとか見てるとMFCの雲行き怪しげなので.NETにしときます。
スレ違いな質問してすみませんでした。
0523デフォルトの名無しさんNGNG
>>520
そんなギミックに頼るハメになる前に単体テストしとく
0524デフォルトの名無しさんNGNG
>>520
メモリリークを検出するソフトを使う
0525デフォルトの名無しさんNGNG
VC6とVC7の違いについて解説しているページはありませんか?
例えば、VC6のメモリウィンドウは、 VC7ではココにある…etc

最近学習を始めたのですが、VC6のMFC関連のHPを見ていると
どうもVC7と操作性?が違っていて、勉強が進みません。

大変お手数ですが、ご教授をお願いします。

0526デフォルトの名無しさんNGNG
>>524
どんなんあるんか教えろや
0527デフォルトの名無しさんNGNG
>>525
これ俺も欲しい
0528デフォルトの名無しさんNGNG
BoundChecker
Purify
0529デフォルトの名無しさんNGNG
>>520
ここのことでつか?
ttp://mikata.curiocube.com/progtips/ch24_newhandler.html
MFC使わなくても…
0530デフォルトの名無しさんNGNG
MFCのクラス(というかメソッド?)がスレッドセーフか否かはどこで調べれば良いでしょうか。
MSDNには特に記述が無いようですが…
0531デフォルトの名無しさんNGNG
>>530
LIBもDLLもシングルとマルチがある
(つまりマルチならクラス全てマルチ)
0532デフォルトの名無しさんNGNG
MFCで作ったプログラムってMFCランタイムがないと
動かないんですか?
(つりではないです。お願いします)
0533デフォルトの名無しさんNGNG
>>532
スタティックリンクすれ
0534532NGNG
>>533
ありがとうございました!
0535デフォルトの名無しさんNGNG
>スタティックリンクすれ

この一言でわかっちゃうってことは、釣りだろw
0536デフォルトの名無しさんNGNG
VC++のコンパイルエラーなど出す「出力ウィンドウ」のように単純に
1行づつメッセージを出力するためにはどのような手法を使うのが一般的なのでしょうか?
0537デフォルトの名無しさんNGNG
>>536
リストコントロールとか
書き込み禁止のエディットコントロールとか
スクロールビューとか
0538520NGNG
遅れますたm(__)m

>>523
単体テストでリークバグを検出したいのでつよw

>>524-528
やっぱ市販製品でつか...(マニーが...orz

>>529
うーんちょっと違いまつ。メモリ確保失敗というより
リークの検出をしたいでつ。。。


みなさんどうもありがとうございますた。
とりあえず慎重にPGして、ひと山あててBoundsChecker
買うですw
0539デフォルトの名無しさんNGNG
COleDataSource::DoDragDrop() を呼ぶ前に CacheGlobalData() を
2種類のデータ形式で呼び出すと、最初はうまく動作するんですが
一定時間後に E_OUTOFMEMORY で COleDataObject::GetGlobalData() に
失敗するようになります。GetGlobalData() を2度呼び出すのは
間違ってるでしょうか?
0540530NGNG
>>531
ありがとうございます。マルチスレッド版DLLならばスレッドセーフ、ということですね。
http://66.102.7.104/search?q=cache:UuuMyILAJXsJ:www.sabamiso.net/yoggy/tdiary/%3Fdate%3D20030822+cstring+%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%82%BB%E3%83%BC%E3%83%95&hl=ja&lr=lang_ja
など、少し調べた限りではMFCってスレッドセーフじゃない、みたいに書かれているページがいくつかありましたので…

(ちなみに使用したかったのはCFileでした。)
ありがとうございました。
0541デフォルトの名無しさんNGNG
>>520
んなもん買わないでも_CrtSetDbgFlag使えばいいんじゃねーの?
0542デフォルトの名無しさんNGNG
ちょっとよろしいですか?
あるディレクトリ以下のファイル名一覧を取得したいんですが、サンプルをコピーしてみて、できたのですが。
日本語のファイル名だけ取得できませんでした・・・。
CFileFindって日本語は駄目なんでしょうか?
0543デフォルトの名無しさんNGNG
>>542
shiftJISのダメ文字が混じってるだけでは?
ttp://www.kent-web.com/pubc/jcode/
0544デフォルトの名無しさんNGNG
>>543
どうやらそのようでした。ありがとうございました!
0545デフォルトの名無しさんNGNG
すみません。>>530-531あたりを見て思ったのですが、
マルチスレッドのDLLを使えばMFCだろうとCのstrtok関数だろうと全てスレッドセーフになり、
シングルのDLLを使う場合は、スレッドセーフであることが保証されていないので自分で同期取らないといけない、
という理解で良いのでしょうか?

私はてっきりマルチスレッドにするときは何が何でもマルチスレッドDLLを使って、
その上で、スレッドアンセーフなものは自分で同期をとるプログラミングをしなさい、
ということかと思っていました…
0546デフォルトの名無しさんNGNG
スレッドセーフなライブラリは、ちゃんと使えば、スレッドセーフになる。
どんな使い方でもスレッドセーフになるって、魔法のライブラリかよ。
「バグのないライブラリを使うと、バグのないプログラムになる」が否なのに同じ。
0547デフォルトの名無しさんNGNG
当然、スレッドセーフでないライブラリは、マルチスレッドで使うと危険。
ちゃんと同期をとって使っているつもりでも、内部処理や内部エリアで同期がとれていない。
0548デフォルトの名無しさんNGNG
>>545
MFCは同期クラス(CMutexとか)以外はスレッドセーフじゃなかった気がする。
心配ならソース見てみれば?
■ このスレッドは過去ログ倉庫に格納されています