VC代码看不懂,大神请详解。
BOOLCLei2323Dlg::OnInitDialog(){CDialog::OnInitDialog();//???为什么要用这一行本来就是要重写父类的但是现在又把...
BOOL CLei2323Dlg::OnInitDialog()
{
CDialog::OnInitDialog();//???为什么要用这一行 本来就是要重写父类的 但是现在又把调用父类的
而且这一行去掉不去掉 都一样???
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);?这是什么意思
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);//?什么意思 有什么功能
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon?这一行什么功能
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
} 展开
{
CDialog::OnInitDialog();//???为什么要用这一行 本来就是要重写父类的 但是现在又把调用父类的
而且这一行去掉不去掉 都一样???
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);?这是什么意思
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);//?什么意思 有什么功能
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon?这一行什么功能
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
} 展开
1个回答
展开全部
BOOL CLei2323Dlg::OnInitDialog()
{
CDialog::OnInitDialog();//???为什么要用这一行 本来就是要重写父类的 但是现在又把调用父类的 而且这一行去掉不去掉 都一样???
***在这个里面会初始化基类窗口的信息,重写父类的是指在这个里面你可以初始化自己窗口的信息,不是说不管基类窗口的信息;去掉是不一样的***
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);?这是什么意思
****每个对话框默认会有一个关于窗口,这个只是判断ID而已,不要这个窗口把相关的删除都无所谓***
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);//?什么意思 有什么功能
****从资源里面加载一个菜单的文本信息,如果不需要这个菜单都可以删除****
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon?这一行什么功能
****你可以观察一下窗口最小化时任务栏上的图标***
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
{
CDialog::OnInitDialog();//???为什么要用这一行 本来就是要重写父类的 但是现在又把调用父类的 而且这一行去掉不去掉 都一样???
***在这个里面会初始化基类窗口的信息,重写父类的是指在这个里面你可以初始化自己窗口的信息,不是说不管基类窗口的信息;去掉是不一样的***
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);?这是什么意思
****每个对话框默认会有一个关于窗口,这个只是判断ID而已,不要这个窗口把相关的删除都无所谓***
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);//?什么意思 有什么功能
****从资源里面加载一个菜单的文本信息,如果不需要这个菜单都可以删除****
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon?这一行什么功能
****你可以观察一下窗口最小化时任务栏上的图标***
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
更多追问追答
追问
谢谢 你的回答 讲的很好 但是这一行CDialog::OnInitDialog() 我删掉 和移动与后面代码的顺序 结果都是一样的 我试了好几次了 不明白。。。
追答
这个是因为你的程序太简单,还看不到他们不一样的地方;
你可以跟进去看一下CDialog::OnInitDialog() 里面的实现,是不一样的,比如说,在里面会调用UpdateData(FALSE)这个接口,用于将你绑定的变量信息输出到对话框上的控件中,如果你的对话框中包含了此类的控件,却没有调用CDialog::OnInitDialog() 显然不会有信息输出到界面上。
因此,一般来说除非你特别清楚这个接口里面做了什么,是否可以替换或者在其他位置补充,否则尽量保留基类的初始化避免一些没必要的问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询