在对话框中进行消息映射((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box")
来源:互联网 发布:同花顺下载软件 编辑:程序博客网 时间:2024/06/08 16:37
话框中进行消息映射
利用对话框的一个好处是可以利用ClassWizard对对话框中各个控件产生的消息进行映射,ClassWizrd可以列出各种控件可以使用的消息,并能自动产生代码。在本节中我们以一个例子来讲解如何在对话框中对子窗口消息进行映射同时还讲解如何对对话框中的子窗口进行初始化。
首先我们产生编辑好一个对话框,如图,在对话框中使用的控件和ID号如下表:
ID类型IDC_RADIO_TEST_1圆形按钮IDC_RADIO_TEST_2圆形按钮IDC_BUTTON_TEST按钮IDC_CHECK_TEST检查按钮IDC_TREE_TEST树形控件IDC_LIST_CTRLList CtrlIDC_TAB_CTRLTab CtrlIDC_LIST_TEST列表框IDC_COMBO_TEST组合框IDC_EDIT_TEST输入框首先我们需要在对话框的OnInitDialog()函数中对各个控件进行初始化,这里我们使用CWnd* GetDlgItem( int nID )来通过ID号得到子窗口指针。(类似的函数还有UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) 通过ID号得到子窗口中输入的数字,int GetDlgItemText( int nID, CString& rString ) 通过ID号得到子窗口中输入的文字)。代码如下:BOOL CMy54_s1Dlg::OnInitDialog() { CDialog::OnInitDialog(); /*添加初始化代码*/ //初始化输入框 ((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box"); //初始化列表框 CListBox* pListB=(CListBox*)GetDlgItem(IDC_LIST_TEST); pListB->AddString("item 1"); pListB->AddString("item 2"); pListB->AddString("item 3"); //初始化组合框 CComboBox* pCB=(CComboBox*)GetDlgItem(IDC_COMBO_TEST); pCB->AddString("item 1"); pCB->AddString("item 2"); pCB->AddString("item 3"); //初始化Tab Ctrl CTabCtrl* pTab=(CTabCtrl*)GetDlgItem(IDC_TAB_TEST); pTab->InsertItem(0,"Tab Page1"); pTab->InsertItem(1,"Tab Page2"); pTab->InsertItem(2,"Tab Page3"); //初始化ListCtrl CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST_CTRL); pList->InsertColumn(0,"Column 1",LVCFMT_LEFT,100); pList->InsertItem(0,"Item 1"); pList->InsertItem(1,"Item 2"); pList->InsertItem(2,"Item 3"); //初始化TreeCtrl CTreeCtrl* pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE_TEST); pTree->InsertItem("Node1",0,0); HTREEITEM hNode=pTree->InsertItem("Node2",0,0); pTree->InsertItem("Node2-1",0,0,hNode); pTree->InsertItem("Node2-2",0,0,hNode); pTree->Expand(hNode,TVE_EXPAND); return TRUE; // return TRUE unless you set the focus to a control }接下来我们需要利用ClassWizard对控件所产生的消息进行映射,打开ClassWizard对话框,选中相关控件的ID,在右边的列表中就会显示出可用的消息。如我们对按钮的消息进行映射,在选中按钮ID(IDC_BUTTON_TEST)后,会看到两个消息,如图,一个是BN_CLICKED,一个是BN_DOUBLECLICKED。双击BN_CLICKED后在弹出的对话框中输入函数名,ClassWizard会产生按钮被按的消息映射。
然后我们看看对TabCtrl的TCN_SELCHANGE消息进行映射,如图,在TabCtrl的当前页选择发生改变时这个消息会被发送,所以通过映射该消息可以在当前页改变时及时得到通知。
最后我们对输入框的EN_CHANGE消息进行映射,如图,在输入框中的文本改变后该消息会被发送。相关的代码如下:
//头文件中相关的消息处理函数定义 afx_msg void OnButtonTest(); afx_msg void OnSelchangeTabTest(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnChangeEditTest(); //}}AFX_MSG DECLARE_MESSAGE_MAP() //CPP文件中消息映射代码 ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_TEST, OnSelchangeTabTest) ON_EN_CHANGE(IDC_EDIT_TEST, OnChangeEditTest) //}}AFX_MSG_MAP END_MESSAGE_MAP() //消息处理函数 void CMy54_s1Dlg::OnButtonTest() { AfxMessageBox("you pressed a button"); } void CMy54_s1Dlg::OnSelchangeTabTest(NMHDR* pNMHDR, LRESULT* pResult) { TRACE("Tab Select changed\n"); *pResult = 0; } void CMy54_s1Dlg::OnChangeEditTest() { TRACE("edit_box text changed\n"); }对于其他的控件都可以采取类似的方法进行消息映射,下载例子。此外如果你对各种控件可以使用的消息不熟悉,你可以通过使用对话框,然后利用ClassWizard产生相关代码的方法来进行学习,你也可以将ClassWizard产生的代码直接拷贝到其他需要的地方(不瞒你说,我最开始就是这样学的 :-D 这也算一个小窍门)。
0 0
- 在对话框中进行消息映射((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box")
- Edit编辑文本控件信息(GetDlgItem,SetWindowText,GetWindowText)
- Edit编辑文本控件信息(GetDlgItem,SetWindowText,GetWindowText)
- [MFC]在程序中访问对话框中的控件——GetDlgItem函数
- MFC对话框中改变对话框,Group Box, Static Text, Check Box, Edit Ctrl(disabled), Combo Box(disabled), Radio Button等控件背景色
- 在CEdit中换行
- VC中在对话框上使用Rich Edit控件
- 对话框设置焦点在edit
- 欺诈邮件:You've won a Microsoft X-Box (This is not spam)
- MFC中怎么让一个函数中的数据在Edit Box中显示?
- mfc 对话框 toolBox 中的控件 ckeck box和Edit control
- 如何在listctrl中添加edit控件和combo box控件
- 手工进行消息映射
- 在vs2008中添加WM_INITDIALOG消息映射
- 在vs2013中添加WM_INITDIALOG消息映射
- 如何在两个对话框之间进行消息传递
- This is a test
- this is a demo:)
- 从算法学起C语言--八皇后(位运算算法)
- 题目1390:矩形覆盖
- android开发中碰到的三个小问题
- unix os下du df简单用法
- PHP函数:mysql_query()
- 在对话框中进行消息映射((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box")
- linux改变某个目录的组
- Python 函数 参数
- Android优秀学习博客
- Fox And Names - CodeForces 510 C
- mini2440 DM9000驱动分析
- Cocos2d-x3.3Final(5)LoadingBar常用成员函数(C++)
- java webservice server 和client 参数和返回值
- android gif动画显示支持5.0