2008年6月19日
久々のMFCプログラミングでハマルorz
客先指定でVisual Studio 6を使っているわけですが…とにかく使いにくいです
VS6が現役バリバリの当時は、ここまで使いにくいと感じなかったのですが…VS2005やVS2008を使い出すとVS6は化石ですね
もう、何から何まで使いにくいです。ソースはVS2005で書いて…VS6に持っていくことも考えたのですが、コワいので地道にVS6 + エディタでガンバッテます
で、サーバ側もC#で書きたかったのですが…これも客先指定でMFC/C++で書いてます。
ダイアログベースで簡単なインタフェースしかない代物なんですが…エディットボックスに通信の経過を表示させようと、通信のスレッドからエディットボックスを弄ろうとすると…アサーションエラーでたぁ
要するにMFCはスレッドセーフじゃないので、別スレッドからダイアログ側を弄ろうとすると例外が発生ようです。そう言えば、MFC + スレッドの取り合わせのプログラムを書くのは初めてのような
この辺りの事情は、C#やVB.NETでも同じようですね~MSDNに「Windows フォーム コントロールのスレッド セーフな呼び出しを行う」とかサンプルがあったりします。
しかし、MFCでの解決方法を書いてるMSDNを見つけることができませんでした
たぶん、「C++ と MFC を使用するマルチスレッド」あたりを読んで理解しなきゃダメなんでしょうけど…わ、わかりにくい
まぁ、よくわからないので結局ダイアログに対して、WM_USER + 1あたりのメッセージをスレッド側から飛ばしてダイアログ側でエディットボックスを弄るように変更して対処しました。排他が面倒だったので、ガチなタイミングでの挙動が若干不安ですが…たぶん、今回の用途であれば十分じゃないかと
![]() |
Visual C++6.0プログラミング 基礎編―MFCを活用したWindowsアプリケーション開発 田中 正造 by G-Tools |
AmazonでMFC関連の本を検索してビックリです。定価より値段の上がっている本が結構あったりしますね
TrackBack URL :

Comments(1)

Win32API完璧マスタ―Visual C++プログラミング
Win32API完璧マスタ―Visual C++プログラミング
まずは動作を確認できて、よろしいと思った。
コンソールプログラムからの移行の説明や、軽いOSの説明があって躓きやすい部分のケアがありがたい。