Appクラスでユーザー定義メッセージを受けとる方法について – プログラミング – Home

Appクラスでユーザー定義メッセージを...
 
通知
すべてクリア

[解決済] Appクラスでユーザー定義メッセージを受けとる方法について


平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

VisualC++6.0 で質問があります。

SendMessage関数の定義は
SendMessage(HWND hWnd,・・・)となっていますが、
メンバ変数にm_hWndを持たないAppクラスやDocクラスに
メッセージを送ることはできるのでしょうか。
また、その場合CViewクラスにメッセージを送る場合と
異なる点はありますでしょうか。

ワーカースレッドからユーザー定義メッセージを送り、
Appクラスのハンドラで処理したいと思っています。

それとも、メッセージは CWnd クラスや CView クラス
で受け取って、そこから目的クラスのメンバ関数を使用す
るのが普通のやり方なのでしょうか。

よろしくお願いします。


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>ワーカースレッドからユーザー定義メッセージを送り、
>Appクラスのハンドラで処理したいと思っています。

いやぁ~、思いつきませんですぅ。hWndがないっすからねェ。(^^;

なぜ、Appクラスで処理されたいのでしょうか?
ハンドラ関数とは、どんな時に処理するもの?


返信引用
平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

> なぜ、Appクラスで処理されたいのでしょうか?
> ハンドラ関数とは、どんな時に処理するもの?

・Appクラスでワーカースレッドを生成する
・ワーカースレッド終了時に終了メッセージをAppクラスに送る
・Appクラスのメッセージハンドラで新たなワーカースレッドを生成する。

という処理を実現したいと思っていました。
上記処理のAppクラスをウィンドウクラスに換えれば問題なさそうですが、
メッセージはあくまでもウィンドウクラスでしか受け取れないという認識
でよろしいのでしょうか。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

>メッセージはあくまでもウィンドウクラスでしか受け取れないという認識
>でよろしいのでしょうか。

正しいかわかりませんが、私はそういう認識をしています。

ワーカースレッドを立てた理由は何でしょうか?

前回の質問内容からだけでは、わざわざスレッドを立てる必要はないように思えます。


返信引用
平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

> ワーカースレッドを立てた理由は何でしょうか?

前回の質問では関係のないコードは省かせて頂きました。
ワーカースレッドでは、実際にはインターネットからファイルを
ダウンロードしています。時間の掛かる処理になると思いました
ので、ワーカースレッドを試しています。

UINT ThreadFunc(LPVOID pParam)
{
hSession = InternetOpen();
hFile = InternetOpenUrl();

while(1) {
InternetReadFile();
if (読込み終了) break;
/*---- 中略 ----*/
::PostMessage(hWnd, (WM_USER + 100), 0, 0);
// 再描画はうまくいっていますが、チラチラします。
// 頻繁に更新し過ぎでしょうか。
}

InternetCloseHandle(hFile);
InternetCloseHandle(hSession);

// ここで終了メッセージをAPPクラスに送ろうとしました。

return 0;
}

以上です。
よろしくお願いします。


返信引用
haogege
 haogege
(@haogege)
ゲスト
結合: 24年前
投稿: 1
 

MassageMap中定義及びOnScan関数
ON_THREAD_MESSAGE(WM_THREAD_SCAN , OnScan)

コルの場合
while(!PostThreadMessage(theApp.m_nThreadID ,WM_THREAD_SCAN, 0,0))
Sleep(10);


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

どう設計するかにもよるのでしょうけど (^^;

結果をViewに反映させるわけですし
私でしたら Viewで処理します。


返信引用
平井
 平井
(@平井)
ゲスト
結合: 24年前
投稿: 48
Topic starter  

haogegeさんにご提案頂いた方法により、Appクラスでもメッセージ(?)が受け取れる
ことが確認できました。ただ、Appクラスで処理しなければならない理由は特にありま
せんので、どのクラスで処理するのが一番スマートかについてこれから考えていきたい
と思います。

色々と勉強になりました。
Bunさん、haogegeさん、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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