最大化ボタンを動的に使用可/使用不可にしたい

[戻る]
Puppy 2002/05/13(月) 17:15:16
Win2000,VC6,MFC,MDIの環境です。

タイトルの通り、MDI子ウィンドウの
最大化ボタンを動的に使用可/使用不可にしたいのですが
どんな方法があるでしょうか。

よろしくお願いします。 m(..)m ペコリ

kng [E-Mail] 2002/05/13(月) 17:29:33
EnableMenuItem()はどうでしょう。

dairygoods 2002/05/13(月) 17:38:25
MDI子ウィンドウのWS_MAXIMIZEBOXスタイルを
つけたり外したりすれば可能です。

// 最大化無効化
CWnd* pwnd = GetParent(); // ビューの場合
pwnd->ModifyStyle(WS_MAXIMIZEBOX, 0);
pwnd->RedrawWindow(NULL, NULL, RDW_INVALIDATE|RDW_FRAME);

Puppy 2002/05/13(月) 17:39:45
kngさん 早速のお返事 ありがとうございます。

CMenu *pMenu = m_pFrame->GetMenu(); // m_pFrameはMDI子ウィンドウへのポインタ
とするとpMenuにはNULLポインタが返ってきます。
どうすればいいのでしょうか。

別の方法として
GetWindowLongを使ってやってみましたが、それもうまく動作しませんでした。

よろしくお願いします。 m(..)m

Puppy 2002/05/13(月) 17:48:49
dairygoods さん お返事ありがとうございます。

うまくいったように見えたのですが、
最小化ボタンも一緒になくなってしまいます。
これは仕方ないのでしょうか?(涙)

くたくた 2002/05/13(月) 23:51:49
CMenu* p = m_pFrame->GetSystemMenu( FALSE );           // システムメニュー参照
p->EnableMenuItem( SC_MAXIMIZE, MF_BYCOMMAND|MF_ENABLED); // 有効化
p->EnableMenuItem( SC_MAXIMIZE, MF_BYCOMMAND|MF_GRAYED ); // 無効化
こんな感じです。

Puppy 2002/05/14(火) 08:58:32
[[解決]]
Puppyです。 おはようございます。

くたくたさん お返事ありがとうございます。
教わった方法で試してみたのですが、最大化ボタンに変化はありませんでした。

>最小化ボタンも一緒になくなってしまいます。
>これは仕方ないのでしょうか?(涙)

実はあらかじめ、MDI子ウィンドウの最小化ボタンをスタイルからはずしていました。
ためしにスタイルからはずさないで、dairygoodsさんに教わった方法で
ModifyStyleするとうまくいきました。

ただ、最大化、最小化ボタンを両方グレーにしようとすると、両方のボタンが
消えてしまうことがわかりました。

とりあえずこれでなんとかしてみます。
お返事をくださった皆様、ありがとうございました。 m(..)m ペコリ

くたくた 2002/05/14(火) 12:26:42
>教わった方法で試してみたのですが、最大化ボタンに変化はありませんでした。
失礼致しました。先述した方法は閉じるボタンのみに対して有効でした。
最大、最小化ボタンに対しては dairygoodsさんの方法 です。
従って、3種のボタンへの操作は(見た目とは裏腹に)同じコードではできないようです。

古いスレッドには追加発言できません。