在运行时在 c++ Windows API 中调整窗口大小?

Posted

技术标签:

【中文标题】在运行时在 c++ Windows API 中调整窗口大小?【英文标题】:In c++ Windows API resize window during runtime? 【发布时间】:2011-08-02 08:13:06 【问题描述】:

在运行时单击按钮时如何调整全局 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
 






【问题讨论】:

【参考方案1】:

MoveWindowSetWindowPos(如果您想做的不仅仅是调整大小,后者更有用)。

在这两种情况下,您不仅可以指定左上角的位置,还可以指定右下角的位置,所以如果您保持左上角不变,并移动下-对,您无需“移动”即可调整窗口大小。

【讨论】:

【参考方案2】:
SetWindowPos(yourhwnd,0,0,0,newWidth,newHeight,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

或者如果你想移动和调整大小,你可以使用旧的 MoveWindow 函数

【讨论】:

以上是关于在运行时在 c++ Windows API 中调整窗口大小?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows 范围的 beta UTF-8 支持功能时在 Winforms 中调整 RTF 的错误

有没有办法在运行时在 C++ 中获取基类名称?

如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?

显示键盘时在 iPad 上的表单中调整表格视图的大小

使用 windows api 和 C++,我如何从硬盘驱动器加载 exe 并在自己的线程中运行它?

如何使用 Windows 运行时使用 C# 实现 C++ API?