一、往基于对话框的程序添加菜单:
[1] 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。
[2] 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。
[3] 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:
在CFileNameDlg类声名中添加成员变量CMenu m_menu,再在CFileNameDlg::OnInitDialog() 中添加如下代码:
//加载菜单
m_menu.LoadMenu(IDR_MENU1);
//设置当前菜单
SetMenu(&m_menu);
//当你不需要菜单时可以用 SetMenu(NULL);来取消当前菜单
二、往基于Dialog的程序添加工具栏:
[1] 先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。
[2] 在CFileNameDlg类声名中添加成员变量 CToolBar m_wndtoolbar;
[3] 在CFileNameDlg::OnInitDialog() 中添加如下代码
三、改变对话框背景色:
在CDlgMenuToolbarDlg::OnPaint()中修改代码实现Dialog 填充颜色:
方法二、在InitInstance()(不是OnInitDialog())中加入:
SetDialogBkColor(RGB(255,0,0),RGB(0,255,0));
注意:要放在InitInstance函数的最前面!
四、为dialog的工具栏添加工具提示:
[1] 在CFileNameDlg类定义中手工添加消息映射函数的定义,如下黑体部分
[2] 在CFileNameDlg.cpp添加函数的实现代码
[3] 在CFileNameDlg.cpp中添加消息映射,请看如下代码中的黑体部分
[4] 在CFileNameDlg.h中添加声明:
BOOL CFileNameDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
五、给没有工具栏的窗口添加工具栏:
在资源管理器中编辑工具栏,并将其属性改为IDR_MAINFRAME,然后在MainFrm.h中声明:
CToolBar m_wndToolBar;
在MainFrm.cpp中添加:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
m_wndToolBar.Create(this);
m_wndToolBar.LoadToolBar(IDR_MAINFRAME);
……;
}
停靠工具栏:在刚才添加的后面加入下面代码:
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);//控制是否开启任意停靠
完善一下功能:
在菜单中添加一项“工具栏”,ID设为ID_VIEW_TOOLBAR,一切OK,试试吧!
六、创建分隔窗口:
只有框架类可以创建分隔,分隔可以嵌套。
在.h文件中声明 CSplitterWnd m_wndSplitter;并且包含COneView.h(新建视图类)和CWinFrame.h(新建框架类)文
件;
然后在.cpp文件中加入:
当用户创建好分割窗口后,有时并不希望通过拖动切分条来调节窗口的大小。这时就必须锁定切分条。锁定切分条的最
简单的方法莫过于不让CSplitterWnd来处理WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR消息,而是将这些消息交给
CWnd窗口进行处理,从而屏蔽掉这些消息。拿WM_LBUTTONDOWN处理过程来说。修改为如下:
void CXXSplitterWnd::OnLButtonDown(UINT nFlags,CPoint point)
{
CWnd::OnLButtonDown(nFlags,point);
}
其余的处理方法类似。
七、“打开”按钮的设置:
用类向导创建该按钮的click函数,选择默认值OnOpen,加入以下代码:
八、窗口居中:
在初始化(OnInit)函数中增加:CenterWindow();即可
九、对话框加状态条:
十、设置初始窗口状态:
对于MDI函数SetWindowText无效,主窗口的标题只能在资源列表中修改,子窗口标题在**doc.cpp中重载OnNewDocument(),调用SetTitle("LGdownload中文版");来修改。
设置初始窗口最大化的另一优化方法:
十一、对话框透明特效:
在OnInitDialog()中加入以下代码:
注意:fun的参数128不能太小,否则就完全透明了!
十二、设置对话框里的STATIC控件颜色属性:
在该对话框增加WM_CTLCOLOR事件,加入以下代码:
if( nCtlColor==CTLCOLOR_STATIC )
{
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkColor(RGB(91,145,244));
pDC->SetBkMode(TRANSPARENT); //设置透明
}
设置STATIC控件背景透明:
if( nCtlColor==CTLCOLOR_STATIC )
{
pDC->SetBkMode(TRANSPARENT); //设置透明
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
十三、使窗口的最大化和最小化按钮消失:
在PreCreateWindow函数中添加以下代码即可: