Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In c++ Windows API resize window during runtime?

How do you resize a global hwnd variable during runtime when a button is clicked?

Or just any way to resize the window during runtime. i.e.

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
 }



}

}
like image 935
Geore Shg Avatar asked Dec 05 '22 22:12

Geore Shg


2 Answers

MoveWindow or SetWindowPos (though the latter is more useful if you want to do more than just resize it).

In both cases, you can specify not only the position of the top-left corner, but also the position of the bottom-right corner, so if you leave the top-left corner as-is, and move the bottom-right, you resize the window without "moving" it.

like image 81
Jerry Coffin Avatar answered Jan 03 '23 19:01

Jerry Coffin


SetWindowPos(yourhwnd,0,0,0,newWidth,newHeight,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

Or if you want to move and resize you can use the older MoveWindow function

like image 43
Anders Avatar answered Jan 03 '23 20:01

Anders