○ウインドウの位置やサイズを求める。

RECT r;
GetWindowRect(hDlg,&r);

○位置やサイズを求めて、位置やサイズを変更

RECT r;
GetWindowRect(hWnd,&r);

int width=(r.right -r.left);
int height=(r.bottom -r.top)-10;
SetWindowPos(hWnd,HWND_TOP,r.left ,r.top ,width,height,SWP_SHOWWINDOW);

//  SetWindowPosオプション
//  HWND_BOTTOM     他のウィンドウの下に配置
//  HWND_NOTOPMOST  最前面の下に配置ただし、もともと最前面である必要有り
//  HWND_TOP        最前面に配置
//  HWND_TOPMOST    最前面でないウインドウの前に表示



○表示・非表示

■ウィンドウを非表示にする

ShowWindow(hDlg,SW_HIDE);

■ウィンドウを表示する

ShowWindow(hDlg,SW_SHOW);


○最小化、最大化

■ウインドウの最小化
SendMessage(hWnd,WM_SYSCOMMAND,SC_MINIMIZE,NULL);

■ウインドウの最大化
SendMessage(hWnd,WM_SYSCOMMAND,SC_MAXIMIZE,NULL);

■サイズを元に戻す
SendMessage(hWnd,WM_SYSCOMMAND,SC_RESTORE,NULL);

■ウィンドウが最大化されているかどうかを調べる

IsZoomed(hWnd)

最大化されてない場合は0が返る

■ウィンドウが最小化されているかどうかを調べる

IsIconic(hWnd)

最小化されてない場合は0が返る

■最大化最小化のメッセージを受け取る

プロシージャに以下を追加する

BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wp,LPARAM lp){
	switch (msg){
		case WM_SHOWWINDOW:
			break;
		case WM_PAINT:
			break;
		case WM_TIMER:
			break;
		case WM_SYSCOMMAND:
			switch(wp)
			{
			case SC_MINIMIZE:
				MessageBox(NULL,"最小化","最小化",0);
				break;
			case SC_MAXIMIZE:
				MessageBox(NULL,"最大化","最大化",0);
				break;
			case SC_RESTORE:
				MessageBox(NULL,"復元","復元",0);
				break;
			}
			break;
		case WM_COMMAND:
		break;
	}
	return FALSE;
}






▲トップページ > Windows と C++