工控编程吧
标题: 上位机MFC如何在对话框中加载状态栏 [打印本页]
作者: qq263946146 时间: 2019-7-22 11:46
标题: 上位机MFC如何在对话框中加载状态栏
同样的,菜单栏,工具栏,状态栏只有在文档工程中默认还有。
在对话框工程中,也得我们自己创建
创建的过程也是类似于工具栏,
首先定义状态栏变量 CStatusBar m_wndStatusBar;,
再创建就好
- //创建状态栏窗口
- if (!m_wndStatusBar.Create(this))
- {
- return -1;
- }
- //ID数组
- UINT IDArray[2];
- for (int n = 0; n < 2; n++)
- {
- IDArray[n] = 10000 + n;
- }
- //设置状态栏指示器
- m_wndStatusBar.SetIndicators(IDArray, sizeof(IDArray) / sizeof(UINT));
- //设置窗格宽度
- m_wndStatusBar.SetPaneInfo(0, IDArray[0], SBPS_NORMAL, 100);
- m_wndStatusBar.SetPaneInfo(1, IDArray[1], SBPS_STRETCH, 0);
- //设置窗格文本
- m_wndStatusBar.SetPaneText(0, _T("状态栏:"));
- m_wndStatusBar.SetPaneText(1, _T(""));
-
- //获得旧客户区坐标
- CRect rcOldClient;
- GetClientRect(rcOldClient);
- //获得新客户区坐标
- CRect rcNewClient;
- RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,
- 0, reposQuery, rcNewClient);
-
- //移动主窗口
- CRect rcMain;
- GetWindowRect(rcMain);
- rcMain.right += rcOldClient.Width() - rcNewClient.Width();
- rcMain.bottom += rcOldClient.Height() - rcNewClient.Height();
- MoveWindow(rcMain, FALSE);
- //移动所有子窗口
- CRect rcChild;
- CPoint point(rcNewClient.left - rcOldClient.left, rcNewClient.top - rcOldClient.top);
- CWnd* pChildWnd = GetWindow(GW_CHILD);
- while (pChildWnd != NULL)
- {
- pChildWnd->GetWindowRect(rcChild);
- ScreenToClient(rcChild);
- rcChild.OffsetRect(point);
- pChildWnd->MoveWindow(rcChild, FALSE);
- pChildWnd = pChildWnd->GetNextWindow();
- }
-
- //重新定位状态栏
- RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
复制代码
(, 下载次数: 1)