2011-12-22 32 views
3

この質問は多くのユーザーにとって素朴であると考えられますが、私はMFCを初めて使用しているため、指示が必要です。私はSDIウィンドウに特定のサイズを設定したいが、それはできない。私はCMainFrameクラスのコードを試してみます:MFCアプリケーション内のウィンドウのサイズを設定します

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
if(!CFrameWndEx::PreCreateWindow(cs)) 
    return FALSE; 

cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER; 

cs.cy = 600; 
cs.cx = 600; 
cs.y = ((cs.cy * 3) - cs.cy)/2; 
cs.x = ((cs.cx * 3) - cs.cx)/2; 


return CFrameWnd::PreCreateWindow(cs); 
} 

ウィンドウは変更されずにそのまま保持されます。

私が心配する限り、CWndクラスのそれぞれの関数をオーバーライドして同じ結果を得ることができます。今まで私のプログラムでCWndクラスを使用していないことを考えれば、どうすればいいですか?

+1

[MFCウィンドウのサイズ設定]の可能な複製(http://stackoverflow.com/questions/178326/sizing-an-mfc-window) – wallyk

答えて

0

CFrameWndEx::PreCreateWindow

+0

私は行を削除if(!CFrameWndEx :: PreCreateWindow(cs)) FALSEを返します。プログラムがクラッシュします。上記の追加コードを置くと、何も変更されません。問題は、いずれの場合でも関数がFALSEを返すことです。どのように私はこれを乗り越える? – arjacsoh

+0

チェックするだけです:上記の変更を加えてアプリケーションを実行し、メインアプリケーションのウィンドウを移動してサイズを変更し、アプリケーションを閉じます。その後、アプリケーションを再開してください。アプリのウィンドウは前の場所にありますか? – qehgt

0

の呼び出しの上にあなたのコードを移動しますが、本当にCFrameWndExから派生したクラスですか?そして、あなたはIMPLEMENT_DYNANIC/IMPLEMENT_DYNCREATE行にあるクラスですか? BEGIN_MESSSAGE_MAP行には?

は、他の可能性を可能にするために、あなたのメッセージマップとそのOnCreate方法にON_WM_CREATEを追加することにも考える:

  • は、あなたがこの新しいメソッドintをやっていることと同様のことを行います。

  • 使用SetWindowPosここ

関連する問題