掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
拡張DLLのダイアログへ、特定の状況でメッセージが届きません。 (ID:71521)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
拡張DLLのダイアログへ、特定の状況でメッセージが届きません。 環境 winxp_sp3/vc6 お世話になっております。 リッチエディットコントロールを貼付けたダイアログを表示するDLLを作りました。 DLLをアプリケーション側から呼び出して、エディットへ文字を書込んでいます。 そのDLLを使用するプログラムは下記のような構成になっています。 #pragma comment(lib, "MyDlg.lib") #include <MyDlgDef.h> class CSocket2 : public CSocket { *省略* CMyDlg m_dlg; // ← DLL CSocket2::CSocket2() { m_dlg.Create(::GetDesktopWindow(), "telnet monitor"); } CSocket2::~CSocket2() { m_dlg.SendMessage(WM_CLOSE); // ←このメッセージが届かない // CMyDlg dlg; // 試しにここで作ってみると // dlg.Create(::GetDesktopWindow(), "telnet monitor"); // dlg.SendMessage(WM_CLOSE); // ←これは届く。 } }; class CMyThread : public CWinThread { *省略* CSocket2 m_socket; }; class CMainFrame : public CFrameWnd { *省略* CMyThread* m_pMyThread; }; (試したこと) *CSocket2コンストラクタとデストラクタでm_dlg変数をウォッチしたところ内容は同一でした。 *CSocket2のデストラクタではなく、CMainFrame::OnClose()で、MyThread経由でWM_CLOSEを送っても届きませんでした。 *プログラム動作中に、MyThread経由でWM_CLOSEを送ると届きました。 長々と書いてしまい申し訳ありません。 よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.