タスクトレイ アプリを作成しています。タイマーである時間が経過したときにダイアログを表示させます。
ダイアログ表示時に、他の作業をしているとフォーカスがダイアログに移動するのを防ぎ、表示したダイアログを閉じたいときにクローズボタンで閉じる。ということをしたいのですが、どのようにすればよいでしょうか?
一応、WS_EX_NOACTIVATEを設定することで、フォーカスを当てないところまではできたのですが、
今度は、表示ダイアログを閉じたり移動したりすることができなくなりました。
ソースは簡単で以下のようにしています。
BOOL CHogeDlg::OnInitDialog()
{
省略
//@@フォーカスを受け取らないようにする
{
UINT unSyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);
// キャプションのスタイルを削除
unSyle = (unSyle | WS_EX_NOACTIVATE);
SetWindowLong(this->m_hWnd,GWL_EXSTYLE,unSyle);
}
}
お手数ですが、御教授をお願いいたします。
開発はVisualStudio2008 MFCで作成しています。
試してはいませんけど、
ShowWindow(SW_SHOWNA);
を使うのでは駄目ですか?
>ダイアログ表示時に、他の作業をしているとフォーカスがダイアログに移動するのを防ぎ
この「表示時」というのは、
「最初に表示や、プログラム上の何かのタイミングで表示更新したいとき」
でしょうか?それとも、
「表示させておきたい間は何があってもずっと。
例えば、エンドユーザーが対象のダイアログをクリックしたとしても」
でしょうか?
ツイート | ![]() |