3

我想在我的 Win32 应用程序中添加一个状态栏。我发现我可以使用CreateStatusWindow函数。在我重新调整窗口大小之前,我工作正常。查看我的代码块的一部分:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }


   CreateStatusWindow(WS_CHILD | WS_VISIBLE, _T("Welcome to SpyWindows"), hWnd, 9000);

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

这是我的应用程序主窗口的两个打印屏幕:

在此处输入图像描述

我该怎么做才能拥有一个好的状态栏?(我也想分更多的区域)

4

1 回答 1

9

文档提到状态栏将在收到 WM_SIZE 消息时重新计算其适当的位置和大小

窗口过程在收到WM_SIZE消息时会自动调整状态栏的大小。通常,当父窗口的大小发生变化时,父窗口会向WM_SIZE状态栏发送消息。

WM_SIZE因此,实现这一点的最简单方法是将父级(使用SendMessage(),来自其窗口过程)收到的消息中继到状态栏。消息参数无关紧要,因为状态栏不会在其计算中使用它们。

于 2013-02-20T18:50:03.120 回答