BOOL MoveWindow( HWND hWnd, int X , int Y , int nWidth , int nHeight , BOOL bRepaint );hwnd は、ウィンドウのハンドルを
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { static HWND hPush; HDC hdc; PAINTSTRUCT ps; RECT rect; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_CREATE: GetClientRect(hwnd , &rect); hPush = CreateWindow( TEXT("BUTTON") , TEXT("Kitty") , WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , 0 , 0 , rect.right , rect.bottom , hwnd , NULL , ((LPCREATESTRUCT)(lp))->hInstance , NULL ); return 0; case WM_SIZE: MoveWindow(hPush , 0 , 0 , LOWORD(lp) , HIWORD(lp) , TRUE); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
BOOL SetWindowPos( HWND hWnd , HWND hWndInsertAfter , int X , int Y , int cx , int cy , UINT uFlags );hWnd は対象となるウィンドウのハンドル
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_CREATE: SetWindowPos( hwnd , HWND_TOPMOST , 0 , 0 , 0 , 0 , SWP_NOMOVE | SWP_NOSIZE ); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
BOOL MoveWindow( HWND hWnd, int X , int Y , int nWidth , int nHeight , BOOL bRepaint );指定されたウィンドウの位置とサイズを変更します
BOOL SetWindowPos( HWND hWnd , HWND hWndInsertAfter , int X , int Y , int cx , int cy , UINT uFlags );子ウィンドウ、ポップアップウィンドウ、トップレベルウィンドウにおいて
定数 | 解説 |
---|---|
HWND_BOTTOM | ウィンドウを Z 順位の最後 (一番下) に置きます hWnd パラメータで指定したウィンドウが 最前面ウィンドウ (WS_EX_TOPMOST) のときは そのウィンドウは最前面ウィンドウではなくなり ほかのすべてのウィンドウの下に置かれます |
HWND_NOTOPMOST | ウィンドウを最前面ウィンドウ (WS_EX_TOPMOST) 以外の すべてのウィンドウの上位 (すべての最前面のウィンドウの下位 ) に置きます hWnd パラメータで指定したウィンドウが最前面ウィンドウでないときは このフラグは意味を持ちません |
HWND_TOP | ウィンドウを Z 順位の最初 (一番上) に置きます ただし、非最前面ウィンドウが最前面ウィンドウにされることはありません |
HWND_TOPMOST | ウィンドウを最前面ウィンドウにします |
定数 | 解説 |
---|---|
SWP_DRAWFRAME | ウィンドウを囲む (ウィンドウクラスの記述部分で定義されている) 枠を描画します |
SWP_FRAMECHANGED | たとえウィンドウのサイズが変更されなくても ウィンドウに WM_NCCALCSIZE メッセージを送ります このフラグを指定しない場合は、ウィンドウのサイズが変更されるときにだけ WM_NCCALCSIZE メッセージが送られます |
SWP_HIDEWINDOW | ウィンドウを非表示にします |
SWP_NOACTIVATE | ウィンドウをアクティブ化しません このフラグを指定しない場合は、ウィンドウはアクティブ化され (hWndInsertAfter パラメータの設定によって) 最前面 または非最前面のどちらかのグループの最上位に移動します |
SWP_NOCOPYBITS | クライアント領域の内容全体を破棄します このフラグを指定しない場合は、クライアント領域の有効な内容が保存され ウィンドウの再配置後にクライアント領域にコピーし直されます |
SWP_NOMOVE | 現在の位置を維持します (X パラメータと Y パラメータを無視します ) |
SWP_NOOWNERZORDER | オーナーウィンドウの Z 順位を変えません |
SWP_NOREDRAW | 変更結果を再描画しません どんな種類の再ペイントも発生しません このフラグは、クライアント領域 非クライアント領域 (タイトルバーやスクロールバーを含む) ウィンドウが移動した結果現れた親ウィンドウのどのような部分にも、適用されま このフラグを指定した場合、アプリケーションは、ウィンドウや親ウィンドウの 再描画の必要な部分を明示的に無効化または再描画しなければなりません |
SWP_NOREPOSITION | SWP_NOOWNERZORDER フラグと同じです |
SWP_NOSENDCHANGING | ウィンドウに WM_WINDOWPOSCHANGING メッセージを 受け取らせないようにします |
SWP_NOSIZE | 現在のサイズを維持します (cx パラメータと cy パラメータを無視します ) |
SWP_NOZORDER | 現在の Z 順位を維持します (hWndInsertAfter パラメータを無視します) |
SWP_SHOWWINDOW | ウィンドウを表示します |