VS2010为新添加的对话框添加OnInitDialog()方法,即重写OnInitDialog()

有时候需要为新添加的对话框添加OnInitDialog()方法为对话框执行一些初始化工作,但是你却找不到在哪里添加是吗?

对话框属性面板里只有“控件事件”与“消息”两种,找不到重写的地方对吗?

那就到对话框绑定的类的头文件中,将鼠标移至成员声明部分,单击F4按钮,再看属性栏,消息图标旁边会出现一个小图标,那就是重写图标了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在 MFC 对话框中使用自定义的 CButton 控件,可以通过重写 CButton 类来实现。 以下是示例代码: 1. 创建一个的 MFC 对话框应用程序。 2. 打开对话框资源,将一个普通按钮控件拖动到对话框中。 3. 右键单击该按钮控件,选择“属性”。 4. 在属性窗口中,将“ID”设为 IDC_MYBUTTON,然后将“样式”设为“自动大小”。 5. 单击“确定”以关闭属性窗口。 6. 在 Visual Studio 中,打开 ClassView 窗口,找到对话框类。 7. 右键单击对话框类,选择“添加类”。 8. 在“添加类”对话框中,选择“MFC 类”,然后选择“CButton”作为基类。 9. 为的 CButton 类指定名称(例如 MyButton)和文件名(例如 MyButton.cpp 和 MyButton.h)。 10. 在 MyButton.h 中,将类声明更改为以下内容: ```cpp #pragma once #include "afxbutton.h" class MyButton : public CMFCButton { public: MyButton(); virtual ~MyButton(); virtual BOOL PreTranslateMessage(MSG* pMsg); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP() }; ``` 11. 在 MyButton.cpp 中,将类实现更改为以下内容: ```cpp #include "stdafx.h" #include "MyButton.h" #ifdef _DEBUG #define new DEBUG_NEW #endif MyButton::MyButton() { } MyButton::~MyButton() { } BOOL MyButton::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 return CMFCButton::PreTranslateMessage(pMsg); } void MyButton::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CMFCButton::OnLButtonUp(nFlags, point); } BEGIN_MESSAGE_MAP(MyButton, CMFCButton) ON_WM_LBUTTONUP() END_MESSAGE_MAP() ``` 12. 在对话框类的头文件中添加一个 MyButton 类成员变量: ```cpp #include "MyButton.h" class CMFCApplication1Dlg : public CDialogEx { // ... private: MyButton m_MyButton; // ... }; ``` 13. 在 OnInitDialog() 函数中,使用以下代码创建 MyButton 控件: ```cpp BOOL CMFCApplication1Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 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); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_MyButton.Create(_T("My Button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_AUTOSIZE, CRect(10, 10, 100, 30), this, IDC_MYBUTTON); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } ``` 现在你已经成功地重写了 CButton 类并创建了一个自定义按钮控件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值