2024年5月10日发(作者:)

setwindowplacement例子

SetWindowPlacement可以用来设置窗口的位置和大小。下面是一个示例,演

示如何使用SetWindowPlacement函数。

首先,我们需要包含一些必要的头文件和定义一些变量:

#include

定义一个保存窗口位置和大小信息的结构体

WINDOWPLACEMENT g_wpPrev = { sizeof(WINDOWPLACEMENT) };

接下来,我们需要创建一个窗口,并在窗口的处理函数中调用

SetWindowPlacement函数来设置窗口的位置和大小。

窗口处理函数

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM

wParam, LPARAM lParam)

{

switch (message)

{

case WM_CREATE:

{

创建窗口时,获取窗口的当前位置和大小信息

GetWindowPlacement(hWnd, &g_wpPrev);

break;

}

case WM_CLOSE:

{

在窗口关闭前,保存窗口的位置和大小信息

WINDOWPLACEMENT wp;

= sizeof(WINDOWPLACEMENT);

GetWindowPlacement(hWnd, &wp);

if (d != SW_SHOWMAXIMIZED)

{

g_wpPrev = wp;

}

break;

}

case WM_COMMAND:

{

int wmId = LOWORD(wParam);

分析菜单选择:

switch (wmId)

{

case IDM_SET_PLACEMENT:

{

设置窗口位置和大小

SetWindowPlacement(hWnd, &g_wpPrev);

break;

}

default:

return DefWindowProc(hWnd, message, wParam,

lParam);

}

break;

}

...

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

在上面的代码中,我们在WM_CREATE消息中调用GetWindowPlacement函

数来获取窗口的当前位置和大小信息,并保存到g_wpPrev变量中。然后,在

WM_CLOSE消息中,我们调用GetWindowPlacement函数来获取窗口即将关

闭时的位置和大小信息,并保存到一个临时变量wp中。如果窗口的显示状态不

是最大化,我们将临时变量wp中保存的位置和大小信息赋值给g_wpPrev变量,

以便在下次打开窗口时恢复之前的位置和大小。

在WM_COMMAND消息中,我们通过菜单选择来调用SetWindowPlacement

函数来设置窗口的位置和大小。SetWindowPlacement函数使用g_wpPrev变

量中保存的信息来恢复窗口的位置和大小。

最后,在创建窗口时,我们需要使用CreateWindow函数来创建窗口,并指定

窗口处理函数WndProc。在窗口处理函数中,我们根据不同的消息来处理窗口

的事件,包括获取和保存窗口的位置和大小信息,以及恢复窗口的位置和大小。

以上就是使用SetWindowPlacement函数的一个简单示例。通过调用

SetWindowPlacement函数,我们可以方便地设置窗口的位置和大小,以及恢

复之前的位置和大小。这在开发需要保存窗口状态的应用程序时非常有用。