OnInitDialog()的原理
来源:互联网 发布:怎样躲避公司网络监控 编辑:程序博客网 时间:2024/05/22 00:40
BOOL CMyDlg::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
return TRUE; // Return TRUE unless you set the focus to a control
}
这是由MFC AppWizard自动生成的对话框初始化代码。其步骤如下:
首先,添加菜单选项。所有已有的选项的ID值大于0xF000,添加的ID值小于0xF000.本程序将添加ID值为IDM_ABOUTBOX的选项到菜单,使得用户点击选项后可以弹出about对话框。
CMenu* pSysMenu = GetSystemMenu(FALSE); //用于获取当前的菜单,返回菜单的指针
pSysMenu->AppendMenu(MF_SEPARATOR); //在当前菜单下添加一分隔符
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); //添加ID为
IDM_ABOUTBOX的菜单选项,显示的选项文字为strAboutMenu,
其次,设定about对话框的图标
SetIcon(m_hIcon, TRUE); //m_hIcon在CDialog中定义,该语句设定32*32大小的图标
SetIcon(m_hIcon, FALSE); //m_hIcon在CDialog中定义,该语句设定16*16大小的图标
问题:
1。m_hIcon指代什么图标,两者是怎样联系起来的?
在CMyDlg::CMyDlg()中,使用m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
IDR_MAINFRAME是图标的ID
OnInitDialog() 与 OnCreate()在上篇中已提到过,这两个函数虽然简单,但有着关建性的区别
在对话框进行操作时就必须放在OnInitDialog()中
OnCreate()是指正在产生窗口但对话框还没有形成(当然窗口还没有显示),如果现在想对其中的一个对话框操作,取得的只是个空指针,呵呵!
OnInitDialog()是指在在产生对话框后,窗口还没有显示时的过程函数
所以在上篇中对对话框的操作应该在OnInitDialog()中进行........
- OnInitDialog()的原理
- OninitDialog
- PreSubclassWindow 与 OnInitDialog 的冲突
- VS2010 添加OnInitDialog的方法
- VS2010 添加OnInitDialog的方法
- Dialog的创建和OnInitDialog的调用
- 如何重载MFC对话框的OnInitDialog()函数
- 对于Dialog,OnCreate()和OnInitDialog()的关系
- OnInitDialog与OnSize的执行顺序
- VC++ 6.0中对话框的OnInitDialog()
- VS2010为新添加的对话框添加OnInitDialog()方法,即重写OnInitDialog()
- VS2010为新添加的对话框添加OnInitDialog()方法,即重写OnInitDialog()
- OnInitDialog()和对话框的构造函数的区别
- OnInitDialog和OnShowWindow的不同与使用范围
- vc2008 给新添加的dialog类,添加OnInitDialog函数
- 注意mfc下oninitdialog()和onsize()的调用顺序
- CDialog::OnInitDialog() 及“试图执行系统不支持的操作”
- OnCreate ,OnSize , OnInitDialog哪个先执行的问题
- js专题
- C++带参数的构造函数多次初始化之怪现象
- Linux环境进程间通信-管道和命名管道
- 关于unknown character '0xa1'的错误
- 删除html标记
- OnInitDialog()的原理
- hdu 1964(插头DP一条回路)
- Java中的String数据类型(转)
- new String[] 与new String[] {""}的区别
- 24小时制的dateformat
- readOnly与disabled的区别
- Oracle 使用触发器实现主键自动增长
- 招商银行的网上银行个人专用版乱码解决办法
- 你不可不知的Mango — 开发者篇(4)