MFC编程(一)

我最近的工作在MFC编程,以下是这一段时间来在MFC编程方面获取的一些东西:

一.菜单上的关闭与窗口右上角的关闭按钮

如果想让点击菜单的关闭添加一些你想做的事情,在类CxxxAPP中添加对点击ID_APP_EXIT的消息的响应:

 

ON_COMMAND(ID_APP_EXIT, OnAppExit)

 

void CxxxAPP::OnAppExit()

{

       // TODO: Add your command handler code here

 

       CWinApp::OnAppExit();

}

 

如果想让点击窗口右上角关闭按钮做添加自己的事情,在类CMainFrame中添加对WM_CLOSE消息的响应:

 

ON_WM_CLOSE()

 

void CMainFrame::OnClose()

{

       // TODO: Add your message handler code here and/or call default

      

       CFrameWnd::OnClose();

}

 

上述代码通过MFC ClassWizard来添加比较快捷(CTRL+W)

 

二.CPropertySheet 怎么让它不能页切换

如果想让它在某页上的数据不合法时,不能进行页切换,方法如下:

CPropertySheet有两种模式,一种是属性页模式,另一种是向导模式,两种模式适合不同的应用,默认是属性页模式。

属性页模式:在页类CxxxPropertyPage重写OnKillActive函数,让其返回FALSE

 

BOOL CxxxPropertyPage::OnKillActive()

{

       // TODO: Add your specialized code here and/or call the base class

       if (不让页切换的条件)

       {

              return FALSE;

       }

 

       return CPropertyPage::OnKillActive();

}

向导模式:在页类CxxxPropertyPage重写OnWizardNext函数,让其返回-1

LRESULT CxxxPropertyPage::OnWizardNext()  

{

       // TODO: Add your specialized code here and/or call the base class

       if (不让页切换的条件)

       {

              return -1;

       }

 

       return   CPropertyPage::OnWizardNext();

}

 

三.CTreeCtrl 怎么做能使鼠标选择不到别的节点

当某节点的数据不合法时,不让进行节点切换,方法如下:

CTreeCtrl添加TVN_SELCHANGING事件处理,返回*pResult = 1

 

ON_NOTIFY(TVN_SELCHANGING, IDC_TASK_TREE, OnSelchangingTaskTree)

 

void CxxxView::OnSelchangingxxxTree(NMHDR* pNMHDR, LRESULT* pResult)

{

       NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

       // TODO: Add your control notification handler code here

       if (不让节点切换的条件)

       {

              *pResult = 1

              return;

       }

       *pResult = 0;

}

 

四.为窗体上的所有EDIT控件写唯一数据改变消息响应函数

当窗体上有很多EDIT控件时,如果不需要为每个EDIT控件添加数据改变响应函数,可以修改消息响应函数为同一函数:

       ON_EN_CHANGE(IDC_XXX1, OnChangeEdit)

       ON_EN_CHANGE(IDC_XXX2, OnChangeEdit)

……

       ON_EN_CHANGE(IDC_XXXN, OnChangeEdit)

 

void test_page::OnChangeEdit()

{    

       // TODO: Add your control notification handler code here

      

}

 

你可能感兴趣的:(编程,工作,command,tree,Class,mfc)