(A)函数是不是必须调用基类对应的继承函数:
参考解析:没用必要与不必要之分,只是看你需不需要,因为积累函数也完成了一些功能,如果你需要这些功能,就学要调用基类对应函数。不然你就没必要去调用它。instance:
void CDialog4Dlg::OnOK() { // TODO: Add extra validation here dlg1 test; int result = test.DoModal(); if(result == IDOK) { AfxMessageBox("单击确定按钮"); } else { AfxMessageBox("单机取消按钮"); } CDialog::OnOK(); //调用基类OnOK函数,是不是必须的?? }
(B)在非模态对话框的显示与关闭中,注意:
必须有一个标志标明非模态对话框是否是打开的。这样做的原因是用户有可能在打开一个非模态对话框的情况下,又一次选择打开命令。程序根据标志决定是打开一个新的对话框还是仅仅将原来已经打开的对话框激活。
(C)添加控件变量:
在程序设计中,各种各样的控件都是用户和应用程序进行交互的工具,控件本身用可能需要一些操作,或者控件与应用程序进行数据的交换,这些都需要利用变量来实现。所以给控件关联一个变量是非常必要的,要学会。
UpdateData()能实现控件与 与控件关联的变量 的数据交互。参数为true时,数据从控件传给变量,参数为false时,数据从变量传给控件。
(D)手动添加消息处理函数的三大步骤:
1.在相应的类中添加函数的声明语句:如在类CGeliangDlg中添加函数OnButton:添加语句为:afx_msg void OnButton();afx_msg说明此函数是被消息映射驱动的成员函数。
2.在相应源文件(.c | .cpp)中添加相应消息:接上面例子:在文件geliangDlg.c中添加ON_BN_CLICKED消息与成员函数OnButton()
BEGIN_MESSAGE_MAP(CDialog4Dlg, CDialog) //{{AFX_MSG_MAP(CDialog4Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON , OnButton) //}}AFX_MSG_MAP END_MESSAGE_MAP()
应注意必须将函数添加在
//{{AFX_MSG_MAP(CDialog4Dlg)
-----
//}}AFX_MSG_MAP之间,这两行代码是ClassWizard进行程序相关数据库管理的特殊标记。
(E)进行数据交互时一个子窗口可以和两种类型的变量相关联:一种为控件对象,例如一个按钮控件可以和一个CButton对象相关联,在这种情况下可以通过该对象直接控制子窗口。另一种变量时常见数据类型,例如输入框可以和一个int变量关联,也可以和一个UINT类型变量关联。