MFC中,关于CDialog::OnInitDialog()、CDialog::OnClose()、return CWinApp::ExitInstance()等用法的疑问
第一段代码:BOOLCClassDlg::OnInitDialog(){CDialog::OnInitDialog();//。。。。//。。。。AddTree();ret...
第一段代码:
BOOL CClassDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//。。。。
//。。。。
AddTree();
return TRUE; // return TRUE unless you set the focus to a control
}
第二段代码:
void CMyPosDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
第三段代码:
int CMyPosApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
if(m_pConnection->State)
m_pConnection->Close(); ///如果已经打开了连接则关闭它
return CWinApp::ExitInstance();
}
********************************************************************************************************************
以上这些代码,都有一些共同的特点,都有类似于
B::MyFunction()
{
A::MyFunction();
}
这样的用法,(B 是 A 类的派生类),并且A::MyFunction(); 可以出现在
B::MyFunction()函数体任何地方,有的出现在开头,有的是在最末尾,有的是在一个分支选择结构中,
我对这种用法很不能理解~~如果我用类向导添加一个这样的函数,我就不知道我自己写的代码该写在
A::MyFunction();的前面,还是后面
另外,在函数中,能不能删除掉A::MyFunction(); 展开
BOOL CClassDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//。。。。
//。。。。
AddTree();
return TRUE; // return TRUE unless you set the focus to a control
}
第二段代码:
void CMyPosDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
第三段代码:
int CMyPosApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
if(m_pConnection->State)
m_pConnection->Close(); ///如果已经打开了连接则关闭它
return CWinApp::ExitInstance();
}
********************************************************************************************************************
以上这些代码,都有一些共同的特点,都有类似于
B::MyFunction()
{
A::MyFunction();
}
这样的用法,(B 是 A 类的派生类),并且A::MyFunction(); 可以出现在
B::MyFunction()函数体任何地方,有的出现在开头,有的是在最末尾,有的是在一个分支选择结构中,
我对这种用法很不能理解~~如果我用类向导添加一个这样的函数,我就不知道我自己写的代码该写在
A::MyFunction();的前面,还是后面
另外,在函数中,能不能删除掉A::MyFunction(); 展开
1个回答
展开全部
派生类成员函数可以调用基类成员函数,如果基类成员被覆盖,需要指定基类作用域。
至于MFC基类成员函数的调用出现在开头或末尾,是MFC的架构决定的,你需要查资料。
至于MFC基类成员函数的调用出现在开头或末尾,是MFC的架构决定的,你需要查资料。
更多追问追答
追问
OnOK()、OnPaint()等可以直接用类名来调用,说明他们是静态成员函数吗?
追答
使用classwizard生成的覆盖成员函数和消息响应函数,里面已经有格式了,todo什么的,你在规定的地方写代码就是了。
基类的成员函数调用能不能删除,要视情况而定,某些可以删,比如OnCommand,OnChar之类。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询