スレッド内からウインドーのメニューを操作したいのですが – プログラミング – Home

スレッド内からウインドーのメニューを操...
 
通知
すべてクリア

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


ムシガー
 ムシガー
(@ムシガー)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

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


引用未解決
トピックタグ
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
 

どのような方法でスレットを作成していますか?
これは書いてあった方が良いです

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

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


返信引用
ムシガー
 ムシガー
(@ムシガー)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ありがとうございます。
スレッドは handle=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )Thread,0,0,&id);
で作りました。AfxBeginThreadで作り直してみようと思います。
ありがとうございました。


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
 

もう作り直してるでしょうか?

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

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


返信引用
ムシガー
 ムシガー
(@ムシガー)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

レスありがとうございます。
作り直してなんとか動くようになりました。
いろいろとありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました