弹出对话框
上一节,说到第一个MFC程序,这一节我们从第一个FirstMFC来延伸弹一个对话框,Initinstance函数相当于main函数,那我们就从这里开始。【更多精彩教程,视频教学、源码分享请加入qq群:569268376】
首先添加一个对话框资源:
修改一下对话框的资源ID:IDD_MAIN_DLG,最好改一下资源ID名称,养成好的编程习惯。添加资源就会多生成两个文件:resource.h和HelloMFC.rc文件
在InitInstance函数中修改一下,添加弹出对话框的代码,DoModal就是弹一个模态对话框
#include<afxwin.h>
#include"resource.h"
classCHellMFCAPP : publicCWinApp
{
public:
virtualBOOLInitInstance()
{
CDialogdlg(IDD_MAIN_DLG);
dlg.DoModal();
returnTRUE;
}
};
CHellMFCApp theApp;
注意要包含头文件:resource.h否则,编译不通过,编译运行效果出来了。
如下效果:
但是此时的对话框,你是无法想要实现你的操作的,比如响应一些windows常用消息。如果要实现必须给对话框添加自己CDialog的子类,这个时候才能截获消息自己来处理。
注意:基类要写CDialog
这里要给CMainDlg的父类对象进行构造
因为现在IDD_MAIN_DLG是定义在resource.h中的,所以要包含头文件。修改一下InitInstance函数:
virtualBOOLInitInstance()
{
CMainDlgdlg;
dlg.DoModal();
returnTRUE;
}
重现编译一下,对话框又出来了,这个时候可以在CMainDlg中控制窗口,想干什么就干什么。
OnInitDialog函数是什么呢?他是对话框的初始化函数,在对话框还没有启动的时候响应,这是我们来设置它的窗口标题:
BOOLCMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowText(L"我是帅哥");
returnTRUE; // return TRUE unless you set the focus to acontrol
// 异常: OCX 属性页应返回 FALSE
}
设置对话框的图标,就是左上角图标,首先还得准备一个图标.ico后缀的文件(或者PS一个),拷贝到项目目录下面,习惯再此新建一个文件夹res
这时候再来添加图标资源:
资源有了之后,接下来加载图标资源,在CMainDlg中添加一个成员变量:HICON m_hIcon; 即图标句柄,再到构造函数中加载图标:
CMainDlg::CMainDlg() :CDialog(IDD_MAIN_DLG)
{
m_hIcon = ::LoadIcon(AfxGetInstancehandle(), MAKEINTRESOURCE(IDI_ICON1));
}
再到OnInitDialog中设置图标:
BOOLCMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowText(L"我是帅哥");
更多精彩教程,视频教学、源码分享请加入QQ群:569268376
SetIcon(m_hIcon,TRUE);
SetIcon(m_hIcon,FALSE);
returnTRUE;
}
好了,这就完成了
更多精彩教程,源码分享请加入QQ群:569268376
相关阅读
最近学习下ActiveX的开发,网上找了好多东西,现在把开发过程记录下来以备以后使用。1.新建工程2.一直点击下一步,直到出现一下界面,注
layui弹出层使用(layer.alert / layer.open / layer.
一 layer.alert 效果图: 代码: //取消提现 function back(id) { layer.alert('真的要取消吗', { skin: 'layui-la
Xshell 缺少 mfc110.dll 原创 2016年03月04日 20:51:49 6609 xshell 应用程序无法正常启动0xc000007b 下载 DirectX修
116651人看了这个视频 返回 暂停 重播 播放 x 为您找到与问题匹配度100%的视频 播放列表 2. 3. 4. 5. 6. 7. 8. 9.
今天遇到了个头疼的问题打开个软件始终提示mfc100u.dll丢失,下面就教大家怎么解决这个烦人的问题!1、问题症状打开软件提示mfc100u.