ウィンドウの状態を常にアクティブに見せたい – プログラミング – Home

ウィンドウの状態を常にアクティブに見せ...
 
通知
すべてクリア

[解決済] ウィンドウの状態を常にアクティブに見せたい


てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

環境 Win2000, VC++6.0

子ウィンドウとしてModelessDlgを表示すると通常親ウィンドウは非アクティブ状態になります
が、子ウィンドウがアクティブのときでも親ウィンドウの見た目をアクティブ状態に見せる
(タイトルがグレーグラデーションにならない)にはどうすればいいでしょうか?
丁度、VCでプロパティを表示している時のような感じです。

説明がわかりにくいかも知れませんがよろしくお願いします。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

WS_EX_TOOLWINDOWが設定されているウインドウだからではないでしょうか?
調べてみてはどうでしょう。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

回答ありがとうございます。

ですが、出来ませんでした・・。
親、子どちらにそのスタイルを設定すればいいのか良くわからなかったので
CFrameWndとCDialog両方でやってみましたがダメです。

CDialog派生::PreSubClassWindow()
{
DWORD dwExStyle = GetExStyle();
dwExStyle |= WS_EX_TOOLWINDOW;
LONG ret1 = ::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, dwExStyle);
BOOL ret2 = ::SetWindowPos(GetSafeHwnd(), NULL, 0, 0, 0, 0, SWP_NOMOVE |
SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED );

CDialog::PreSubclassWindow();
}

呼んでる場所がマズイ??OnInitDialog()でもダメでしたが。
引き続きお願いします。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

> VCでプロパティを表示している時のような感じです。

と言うことだったので書いてみたんですが、
プロパティを表示しているダイアログを見てみると通常のダイアログは
明らかに違うものである事がわかると思います。
ツールバーがフローティングになっている時の状態と同じだと思うのです。
それで、WS_EX_TOOLWINDOWを設定してはどうかと思ったんですが、
設定するならダイアログの方だけに行うべきだと思いますし、
通常のダイアログとは表示が異なってしまうことは頭においておくべきかと思います。


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

確かにダイアログの見た目(フォントや×ボタン)などは
プロパティを表示しているダイアログと一緒になりました。
でもこのダイアログにフォーカスがあるとき親はグレーなんです。
まだ何かスタイルの設定などあるかもしれませんね。
ぐぐってみます。

>通常のダイアログとは表示が異なってしまう
ちなみにダイアログ枠なしのスタイルで使用する予定なので
子ダイアログのタイトルバーの見た目はどうでも良いです(^^;


返信引用
fackt
 fackt
(@fackt)
ゲスト
結合: 21年前
投稿: 8
 

WM_NCACTIVATEを使用することで可能です。
詳しくはここに載っています。
http://www.alpha-net.ne.jp/users2/gmaru/programs/pg_docktool_01.html


返信引用
てんてく
 てんてく
(@てんてく)
ゲスト
結合: 20年前
投稿: 92
Topic starter  

>facktさん
出来ました!
グローバルフラグの差分、MFC版の差分など修正項目はまだありますが
そこら辺は自力で何とか出来そうな予感がしています。
ありがとうございました m(_ _)m

また何かありましたらよろしくお願いします


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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