同样的,菜单栏,工具栏,状态栏只有在文档工程中默认还有。
在对话框工程中,也得我们自己创建
创建的过程也是类似于工具栏,
首先定义状态栏变量 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);
复制代码
上位机MFC如何在对话框中加载状态栏
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|