まったくのVC++およびプログラミング初心者です。
アプリケーションの種類がSDIです。一つスレッドを作り、無限ループさせています。
その中で、シリアルポートのCOM1からの信号を受けるようにはなんとか出来たのですが、
信号を受け取ったというのがわかるようにトップ レベル (メニュー バー) の
メニュー項目を変化させようとしていますがどうしてもわかりません。
また、メッセージでも出してわかるようにしようと、スレッドの中でMessageBoxを使うと
エラーが出てコンパイルできません。また、CMainFrameの関数も呼び出せないのですが
何か方法はあるのでしょうか。
以上をお読みいただければ、いかにVC++を理解していないかおわかりかと思いますが、
なにかヒントをいただければまた調べたいと思いますので何卒、よろしくお願いします。
どのような方法でスレットを作成していますか?
これは書いてあった方が良いです
CMainFrameとあるのでMFC使用として
私はあまり詳しいことはわかりませんが、
AfxBeginThreadの場合、スレッド作成時の第2引数に構造体orクラスのポインタを渡す
その構造体orクラスのメンバにCMainFrameのポインタを登録しておけば良い。
スレッド内で構造体orクラスを展開してCMainFrameのポインタを取得。以上
ありがとうございます。
スレッドは handle=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )Thread,0,0,&id);
で作りました。AfxBeginThreadで作り直してみようと思います。
ありがとうございました。
もう作り直してるでしょうか?
CreateThreadでもポインタを渡せそうですけど、
第4引数のLPVOID lpParameterここに渡せませんか?
CreateThreadはまだ使用したことがないので詳しくはわかりませんが、
AfxBeginThreadの型と同じなのでできると思います
レスありがとうございます。
作り直してなんとか動くようになりました。
いろいろとありがとうございました。