对话框编程(vc使用技巧集)

一、往基于对话框的程序添加菜单

[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函数中添加以下代码即可:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章