在Win32应用程序中添加状态栏

时间:2013-02-20 18:44:16

标签: c++ winapi statusbar

我想在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;
}

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

enter image description here

如果有一个好的状态栏我该怎么办? (我也想把它分成更多的区域)

1 个答案:

答案 0 :(得分:7)

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

  

窗口过程会自动调整状态栏的大小   每当收到WM_SIZE消息时。通常,当大小时   父窗口更改,父窗口发送WM_SIZE消息   状态栏。

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