スレッド内からウインドーのメニューを操作したいのですが

[戻る]
ムシガー 2002/09/30(月) 11:49:39
まったくのVC++およびプログラミング初心者です。
アプリケーションの種類がSDIです。一つスレッドを作り、無限ループさせています。
その中で、シリアルポートのCOM1からの信号を受けるようにはなんとか出来たのですが、
信号を受け取ったというのがわかるようにトップ レベル (メニュー バー) の
メニュー項目を変化させようとしていますがどうしてもわかりません。
また、メッセージでも出してわかるようにしようと、スレッドの中でMessageBoxを使うと
エラーが出てコンパイルできません。また、CMainFrameの関数も呼び出せないのですが
何か方法はあるのでしょうか。
以上をお読みいただければ、いかにVC++を理解していないかおわかりかと思いますが、
なにかヒントをいただければまた調べたいと思いますので何卒、よろしくお願いします。

ナオーバ 2002/09/30(月) 12:09:24
どのような方法でスレットを作成していますか?
これは書いてあった方が良いです

CMainFrameとあるのでMFC使用として

私はあまり詳しいことはわかりませんが、
AfxBeginThreadの場合、スレッド作成時の第2引数に構造体orクラスのポインタを渡す
その構造体orクラスのメンバにCMainFrameのポインタを登録しておけば良い。
スレッド内で構造体orクラスを展開してCMainFrameのポインタを取得。以上

ムシガー 2002/09/30(月) 13:15:48
[[解決]]
ありがとうございます。
スレッドは handle=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )Thread,0,0,&id);
で作りました。AfxBeginThreadで作り直してみようと思います。
ありがとうございました。

ナオーバ 2002/09/30(月) 13:24:40
もう作り直してるでしょうか?

CreateThreadでもポインタを渡せそうですけど、
第4引数のLPVOID lpParameterここに渡せませんか?

CreateThreadはまだ使用したことがないので詳しくはわかりませんが、
AfxBeginThreadの型と同じなのでできると思います

ムシガー 2002/09/30(月) 15:53:32
レスありがとうございます。
作り直してなんとか動くようになりました。
いろいろとありがとうございました。

古いスレッドには追加発言できません。