В c ++ Windows API изменяет размер окна во время выполнения? - PullRequest
4 голосов
/ 10 апреля 2011

Как изменить размер глобальной переменной hwnd во время выполнения при нажатии кнопки?

Или просто каким-либо способом изменить размер окна во время выполнения.т.е.

HWND hwnd; //global
int buttonid = 250; // an id for a button
//also global


int WINAPI wWinMain(/*blah blah blah */) {


//blah blah blah

hwnd = CreateWindowEx(
    0,
    L"WindowClass",
    L"Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT,
    300, 275,
    NULL,
    NULL,
    hInstance,
    NULL
    );

    HWND mybutton = CreateWindow(
    L"BUTTON",
    L"Button",
    WS_VISIBLE | WS_CHILD | WS_TABSTOP,
    14, 13,
    250, 200,
    hwnd,
    (HMENU)buttonid,
    hInstance,
    NULL
    );

//blah blah blah

}


LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lparam) {

switch(uMsg) {

 case WM_COMMAND:
 if(buttonid==wParam) {
 //this is where i want the code for resizing hwnd so when you click the
 //button it resizes the window
 }



}

}

Ответы [ 2 ]

8 голосов
/ 10 апреля 2011
SetWindowPos(yourhwnd,0,0,0,newWidth,newHeight,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

Или, если вы хотите переместить и изменить размер, вы можете использовать более старую функцию MoveWindow

8 голосов
/ 10 апреля 2011

MoveWindow или SetWindowPos (хотя последнее более полезно, если вы хотите сделать больше, чем просто изменить его размер).

В обоих случаях вы можете указать не только положение верхнего левого угла, но и положение нижнего правого угла, поэтому, если вы оставите верхний левый угол как есть, и переместите нижний верно, вы изменяете размер окна, не "перемещая" его.

...