メニューを使用不可にしたい

[戻る]
てんてく 2008/02/06(水) 16:59:15
環境WinXP, VC++6.0(MFC)

MDIを使用しアプリケーションを作成しています。
起動時にデフォルトのViewを最大化+メニューを使用不可にしたくて

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* 
pContext) 
{
  CMenu* p = GetSystemMenu(FALSE);
  for(int i=0; i<p->GetMenuItemCount(); i++)
  {
    p->EnableMenuItem(p->GetMenuItemID(i), MF_BYCOMMAND | MF_DISABLED);
  }
  DrawMenuBar();
  ShowWindow(SW_SHOWMAXIMIZED);//最大化できない
}
こんなコーディングをしたのですがクローズのボタンしか使用不可に出来ません。
また、最大化もできません。
なにかアドバイスをいただければ幸いです。

てんてく 2008/02/06(水) 17:06:34
追記です。
  ShowWindow(SW_SHOWMAXIMIZED);//最大化できない
のほうはタイミングを変えれば最大化できるので
(たとえば、1Sタイマを仕掛けてそこで最大化してみるとか)
起動時に最大化するにあたりふさわしいタイミングを教えていただけると嬉しいです。

chamaro 2008/02/06(水) 20:44:40
CWnd::PreCreateWindow
CREATESTRUCT構造体styleについて調べれば幸せになれるかもしれません。

てんてく 2008/02/07(木) 01:50:03
chamaroさん、回答ありがとうございます。
PreCreateWindowでメニューのほうを表示しないことで使用不可に
出来たのですがWS_MAXIMIZEを指定しても最大化できませんでした。
なにかおかしい・・・?

..S 2008/02/07(木) 10:00:01
ShowWindow(SW_SHOWMAXIMIZED);//最大化できない
の後に
UpdateWindow();
を追加してみては?

NOR 2008/02/07(木) 10:05:33
> PreCreateWindowでメニューのほうを表示しないことで使用不可に
> 出来たのですがWS_MAXIMIZEを指定しても最大化できませんでした。

昔同じことをやったときには、
cs.style |= WS_VISIBLE | WS_MAXIMIZE;
というように、WS_VISIBLEも入れないと最大化しなかったです。

てんてく 2008/02/07(木) 10:41:07
..Sさん
NORさん
回答ありがとうございます。試してみたところスタイル上適応されているようですが
最大化の表示は出来ませんでした。起動後にMainFrameのサイズを変更した時に
最大化表示されるようです。
また、ViewのInitialUpdateで
ShowWindow(SW_SHOWMAXIMIZED);
UpdateWindow();
と書いてみたけど同様でした。

てんてく 2008/02/07(木) 10:45:31
[[解決]]
お手数掛けました。
void CFFFFFView::OnInitialUpdate()
{
  //ResizeParentToFit(); // comment
}

ResizeParentToFitを消したら最大化できました。
回答くださった皆様、ありがとうございました!

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