Win2000,VC6,MFC,MDIの環境です。
タイトルの通り、MDI子ウィンドウの
最大化ボタンを動的に使用可/使用不可にしたいのですが
どんな方法があるでしょうか。
よろしくお願いします。 m(..)m ペコリ
EnableMenuItem()はどうでしょう。
MDI子ウィンドウのWS_MAXIMIZEBOXスタイルを
つけたり外したりすれば可能です。
// 最大化無効化
CWnd* pwnd = GetParent(); // ビューの場合
pwnd->ModifyStyle(WS_MAXIMIZEBOX, 0);
pwnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE|RDW_FRAME);
kngさん 早速のお返事 ありがとうございます。
CMenu *pMenu = m_pFrame->GetMenu(); // m_pFrameはMDI子ウィンドウへのポインタ
とするとpMenuにはNULLポインタが返ってきます。
どうすればいいのでしょうか。
別の方法として
GetWindowLongを使ってやってみましたが、それもうまく動作しませんでした。
よろしくお願いします。 m(..)m
dairygoods さん お返事ありがとうございます。
うまくいったように見えたのですが、
最小化ボタンも一緒になくなってしまいます。
これは仕方ないのでしょうか?(涙)
CMenu* p = m_pFrame->GetSystemMenu( FALSE ); // システムメニュー参照
p->EnableMenuItem( SC_MAXIMIZE, MF_BYCOMMAND|MF_ENABLED); // 有効化
p->EnableMenuItem( SC_MAXIMIZE, MF_BYCOMMAND|MF_GRAYED ); // 無効化
こんな感じです。
Puppyです。 おはようございます。
くたくたさん お返事ありがとうございます。
教わった方法で試してみたのですが、最大化ボタンに変化はありませんでした。
>最小化ボタンも一緒になくなってしまいます。
>これは仕方ないのでしょうか?(涙)
実はあらかじめ、MDI子ウィンドウの最小化ボタンをスタイルからはずしていました。
ためしにスタイルからはずさないで、dairygoodsさんに教わった方法で
ModifyStyleするとうまくいきました。
ただ、最大化、最小化ボタンを両方グレーにしようとすると、両方のボタンが
消えてしまうことがわかりました。
とりあえずこれでなんとかしてみます。
お返事をくださった皆様、ありがとうございました。 m(..)m ペコリ
>教わった方法で試してみたのですが、最大化ボタンに変化はありませんでした。
失礼致しました。先述した方法は閉じるボタンのみに対して有効でした。
最大、最小化ボタンに対しては dairygoodsさんの方法 です。
従って、3種のボタンへの操作は(見た目とは裏腹に)同じコードではできないようです。