- ベストアンサー
子ウィンドウの最大表示
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MFCってヤツはホントにいろいろ勝手なことをやってくれて困ります。 設定しても設定しても無視してくれるし。 OnCreateClientあたりでMDIMaximize()してしまいましょう。
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
私は MFC は使いませんが、多分、これでいけると 思いますよ。
お礼
HPの紹介ありがとうございました。 a-kumaさんの方法でもできましたが、 MDIMaximize(); の方が1行でコーディングできるので、 millionwalkerさんの方法を採用することとしました。 でも、解決方法がいろいろあるということと、 MFCのFAQ集が見つかり、 とても勉強になりました。 ありがとうございました。
関連するQ&A
- ウインドウサイズについて
起動時のウインドウサイズは以下で指定することが出来ますが、タイマーなどを使って、例えば起動後1分後にサイズを変えることは出来ますか? <VC++6.0 MFCにて> BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを // 修正してください。 // ウィンドウの左上が X軸200,Y軸100の場所に指定 cs.x = 200; cs.y = 100; // ウィンドウのサイズを、幅500,高さ300に指定 cs.cx = 500; cs.cy = 300; return TRUE; }
- ベストアンサー
- C・C++・C#
- WindowsAPIの、ウインドウの表示非表示
WindowsAPIのCreateWindowEx関数で作った 例えば第一引数が WS_EX_TOOLWINDOW|WS_EX_TOPMOST で第四引数が WS_SYSMENU | WS_VSCROLL | WS_SIZEBOX のウインドウを、何かのアクションがあったときいったん非表示にしてから、また何かのアクションがあった時に表示させるには、どのような物を使うのがベストなのでしょうか? プロシージャ内(HWNDはhw)で一例として(…?)試しに以下だけのものでやってみると long lStyle = GetWindowLong(hw, GWL_STYLE); lStyle = ~WS_VISIBLE; SetWindowLong(hw, GWL_STYLE, lStyle); 確かに非表示扱いにはなるようなのですが、これだけではスクリーンは再描画されず、再描画されるには人為的に別ウインドウを移動したりしないといけません。 おそらく「何かによって再描画させられれば」出来ると思うのですが それはどうすれば実現できるのでしょうか? また、これより もっと「こっちの方がいい」といった方法はありますでしょうか?
- ベストアンサー
- C・C++・C#
- accessでフォームの最大化表示
AというフォームとBというフォームがあります。 Aは任意の大きさで表示、Bは最大化表示をしたいのですが、 Docmd.maximizeなどを使うとすべてが最大化になってしまいます。 Bというフォームだけを最大化するにはどうしたらいいですか? (ディスプレイいっぱいに表示される最大化ではなく、通常の最大化(Accessのウィンドウ内でおさまる大きさ)で お願いします。)
- 締切済み
- オフィス系ソフト
- ダイアログボックスの最大化・最小化ボタンを無効表示
VC++ .NET2003 + MFCでプログラムを作成しています。 ダイアログボックスに最大化・最小化ボタン(タイトルバーの右端)を無効状態で表示する方法が分かりません。どなたか、ご教示ください。 ちなみに、ウィンドウスタイルから WS_MAXIMIZEBOX、WS_MINIMIZEBOXを削除するとそれぞれのボタンが表示されなくなりますが、これでは要件を満たしません。 あくまでも、無効状態のボタンを表示させたいのです。 ×ボタンと同じ方法で出来るのかと思い、OnInitDialog()の中で GetSystemMenu(FALSE)->EnableMenuItem(SC_MINIMIZE, MF_BYCOMMAND | MF_GRAYED); GetSystemMenu(FALSE)->EnableMenuItem(SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED); としてみましたが、駄目でした。 # この方法ではシステムメニュー内の項目も無効表示にはなりませんでした。 続いて、WM_INITMENUのハンドラで以下のようにしてみたところ、システムメニューの項目は無効表示になりましたが、タイトルバー右端の最大化・最小化ボタンは有効状態のまま変わりませんでした。 void OnInitMenu(CMenu* pMenu) { pMenu->EnableMenuItem(SC_MINIMIZE, MF_BYCOMMAND | MF_GRAYED); pMenu->EnableMenuItem(SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED); } ちなみに、WM_SYSCOMMANDハンドラ(OnSysCommand)で最大化・最小化のコマンドを無視する事で動作そのものを無視する事は出来ています。 後はボタンを無効表示にするだけなのですが... どうか、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 最大化時のフルスクリーン
いつもお世話になっております。 VS2005 を使ってWindowsアプリケーションの実装を行っています。 最大化時にフルスクリーンにしたくプログラムを作成しているのですが、 WndProc内で下記のプログラムを実行し、 最大化アイコンをクリックするとバグ?が起きてしまいます。 -------------------------------------------------- case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); if(wParam == SIZE_MAXIMIZED){ //最大化されたら ShowWindow(hWnd, SW_SHOWNORMAL); //(1)ウィンドウを元のサイズに戻す //(2)アプリケーションのウィンドウのフレームを「なし」にする GetWindowLong(hWnd, GWL_STYLE); //ウインドウ・スタイルの取得 SetWindowLong(hWnd, GWL_STYLE, WS_POPUP); //ウインドウ・スタイルの設定 SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER); ShowWindow(hWnd, SW_MAXIMIZE); //(3)ウィンドウ最大化 } return 0; -------------------------------------------------- 実行したアプリケーションの右上の最大化ボタンを押すと、 見た感じではif文の中を繰り返し行っているような・・・ 元のサイズに戻って最大化になってを数秒繰り返して 最後にペイントして停止します。(高速なため確かではありません) 上記プログラムをどう直したらよいのでしょう。 ご教授お願いいたします。
- ベストアンサー
- C・C++・C#
- ウインドウスタイルの、WS_EX_TOPMOST
引き続きVC++2008でWindowsフォームアプリケーションを作っています。 WindowsAPIでのウインドウ製作中です。 今Form1を親とするウインドウで、CreateWindowEx内のウインドウスタイルの個所の引数にWS_EX_TOPMOSTを指定したのですが どうも最前面に表示されてくれないようです。 これは何か他にやらないといけない事があるのでしょうか? なお、CreateWindowEx関数は現在、最初の引数を WS_EX_TOOLWINDOW にして、WS_EX_TOPMOST以外のウインドウスタイルは WS_SYSMENU | WS_VSCROLL | WS_SIZEBOX がある状態です。
- ベストアンサー
- C・C++・C#
- オーナー付きウィンドウと子ウィンドウについて
http://web.kyoto-inet.or.jp/people/ysskondo/chap7.html のサイトで気になったのですが、 このサイトの hChildWnd=CreateWindow( "SubWindowClass","子ウインドウ", WS_CAPTION|WS_THICKFRAME|WS_CHILD, 10,10,200,100,hwnd,(HMENU)1, cs->hInstance,0); の|WS_CHILDを消すと if((hOwnedWnd==NULL)||(hChildWnd==NULL)) return -1; のところで終了してしまうのですが、 なぜなのでしょうか?
- ベストアンサー
- C・C++・C#
- VC++2010 MFC サイズの最大化について
VC++2010 MFCで作成しているんですが、 ShowWindow(SW_MAXIMIZE)を使用し最大化で表示出来たんですが、上のメニューの所を ダブルクリックすると元のサイズに戻ってしまうんですが、どのようにすれば元のサイズに戻らず サイズも変更されずに最大化のまま表示できますか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
お礼
一発でうまく行きました。 ご指導ありがとうございました。 今後ともよろしくお願い致します。