自建工具栏时,要想在菜单栏中控制其显示或隐藏,可有两种方法,如下的代码:
(1)
void CMainFrame::OnViewNewTool()
{
if(m_newToolBar.isWindowVisible())
{
m_newToolBar.ShowWindow(SW_HIDE);
}
else
{
m_newToolBar.ShowWindow(SW_SHOW);
}
RecalLayout();
DockControlBar(&m_newToolBar);
}
(2)
ShowControlBar(&m_newToolBar,!m_newToolBar.isWindowVisible(),FALSE);
给菜单项加上复选标记的方法:
1。在菜单项上点右键,加一个消息响应函数:UPDATE_COMMAND_UI
添加代码如下:
void CMainFrame::OnUpdateViewNewtool(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_newToolBar.isWindowVisible());
}
3.对状态栏编程。
首先在String Table 中添加字符串ID,然后在CMainFrame中找到indicators[]数组,在其中加入刚才添加的字符串的
ID。
4。对时间编程。
CTime t=CTime::GetCurrentTime();
CString str=t.Format("%H:%M:%S");
设置状态栏中右边指示器中面板的内容:SetPaneText().
获得指示器中某个ID的index,可用CommnandToIndex().
改变指示器中某个面板的宽度:SetPaneInfo(int index,UINT nID,UINT nStyle,int cxWidth);
获得一个字符串的长度:
CClientDC dc(this);
CSize sz=dc.GetTextExtent(str);
5.进度栏的编程。
CProgressCtrl::CProgressCtrl()
(1)构造一个CProgressCtrl对象。
CProgressCtrl m_cprc
(2)在onCreate中去创建一个进度栏。
m_cprc.Create(WS_CHILD|WS_VISIBLE)
让进度动起来:
SetStep().
SetRange().设置范围。
6.自定义消的方法:
(1)。在头文件中定义一个消息ID。为防止和系统消息发生冲突,用下面的方法。
如:#define UM_PROGRESS WM_USER+1
(2)。作消息响应函数原型的声明:
afx msg void OnPress();
(3).作消息映射:
ON_MESSAGE(UM_PROGRESS,OnProgress)
(4).消息响应函数的实现。
CMainFrame::OnProgress()
{
}
可以在某个函数中发送这样一个消息:SendMessage(UM_PROGRESS);
或PostMessage(UM_PROGRESS);
** 移动窗口到指定的位置:SetWindowPos() (功能多些,可以设顶层窗口)和MoveWindow()(方便些)
CFrameWnd::SetMessageText()的用法。
CFrameWnd::GetMessageBar()的用法。
CWnd::GetDescendantWindow()的用法。