MFC create 构造函数的区别
MFC里面的类,有构造函数,create函数,还有OnInitial等和初始化有关的函数,有什么区别啊,为什么要用这么多呢?还有要生成一个弹出对话框Dialog,应该怎么...
MFC里面的类,有构造函数,create函数,还有OnInitial等和初始化有关的函数,有什么区别啊,为什么要用这么多呢?还有要生成一个弹出对话框Dialog,应该怎么写
CDialog m(this);
............//一些操作
this.ShowModal();
我这样写为什么会断言错误(中间操作是((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("asdf");)提示错误winocc.cpp Line92
请大侠帮帮忙
前面写错了,是这样的
CDialog cd(this);
((CComboBox*)cd.GetDlgItem(IDC_COMBO1))->AddString("asdf");
cd.ShowModal();
后来改了一下,把中间的去掉,然后添加一个控件,并添加点击事件
写上
((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("asdf");
这样的话就可以 展开
CDialog m(this);
............//一些操作
this.ShowModal();
我这样写为什么会断言错误(中间操作是((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("asdf");)提示错误winocc.cpp Line92
请大侠帮帮忙
前面写错了,是这样的
CDialog cd(this);
((CComboBox*)cd.GetDlgItem(IDC_COMBO1))->AddString("asdf");
cd.ShowModal();
后来改了一下,把中间的去掉,然后添加一个控件,并添加点击事件
写上
((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("asdf");
这样的话就可以 展开
推荐于2016-08-04
展开全部
关键的MFC函数的区别如下:
1、onPaint与onDraw
这两个函数的区别在网上解释的也比较多,首先要明确OnPaint()是CWnd类的成员函数,OnDraw()是CView类的成员函数,而CView派生于CWnd,因此CView类也继承了OnPaint函数。另外,要明确响应WM_PAINT消息的是OnPaint函数。
对于View类来说,当其窗口客户区变得无效时,windows将产生一个WM_PAINT消息,View类继承的OnPaint函数响应该消息,并通过创建CPaintDC类的对象进一步调用OnDraw函数。因此,通常情况下,没有必要重写OnPaint函数,只需要在OnDraw类中进行绘图操作。
2、OnCreate和PreCreateWindow
首先说明一下OnCreate和PreCreateWindow的调用时间,PreCreateWindow是在窗口注册之后,并用CreateWindowEx产生窗口之前调用的;而OnCreate是在窗口创建之后,显示之前调用的。
PreCreateWindow的是让程序员在PreCreateWindow中按自己的要求修改窗口的注册信息,以改变窗口的风格,如果在PreCreateWindow中修改了注册信息值,那么在紧接着的调用CreateWindowEx创建窗口时,其参数就会发生相应的改变,从而就创建了一个符合要求的窗口。
OnCreate函数是WM_CREATE消息的相应函数,任何一个窗口创建时都会产生一个WM_CREATE消息,由于此时还没有开始消息循环,因此是通过SendMessage直接发出的,不经过消息循环,直接调用消息相应函数。OnCreate函数的主要目的是让程序员在窗口创建之后,显示之前,通过该函数向窗口添加控件以及初始绘图操作。
3、OnCreate和OninitDialog
首先要区分一点,OninitDialog主要针对对话框,而OnCreate用于所有窗口。再说明一下他们还有Onsize的调用顺序,OnCreate > OnSize > OnInitDialog。
1、onPaint与onDraw
这两个函数的区别在网上解释的也比较多,首先要明确OnPaint()是CWnd类的成员函数,OnDraw()是CView类的成员函数,而CView派生于CWnd,因此CView类也继承了OnPaint函数。另外,要明确响应WM_PAINT消息的是OnPaint函数。
对于View类来说,当其窗口客户区变得无效时,windows将产生一个WM_PAINT消息,View类继承的OnPaint函数响应该消息,并通过创建CPaintDC类的对象进一步调用OnDraw函数。因此,通常情况下,没有必要重写OnPaint函数,只需要在OnDraw类中进行绘图操作。
2、OnCreate和PreCreateWindow
首先说明一下OnCreate和PreCreateWindow的调用时间,PreCreateWindow是在窗口注册之后,并用CreateWindowEx产生窗口之前调用的;而OnCreate是在窗口创建之后,显示之前调用的。
PreCreateWindow的是让程序员在PreCreateWindow中按自己的要求修改窗口的注册信息,以改变窗口的风格,如果在PreCreateWindow中修改了注册信息值,那么在紧接着的调用CreateWindowEx创建窗口时,其参数就会发生相应的改变,从而就创建了一个符合要求的窗口。
OnCreate函数是WM_CREATE消息的相应函数,任何一个窗口创建时都会产生一个WM_CREATE消息,由于此时还没有开始消息循环,因此是通过SendMessage直接发出的,不经过消息循环,直接调用消息相应函数。OnCreate函数的主要目的是让程序员在窗口创建之后,显示之前,通过该函数向窗口添加控件以及初始绘图操作。
3、OnCreate和OninitDialog
首先要区分一点,OninitDialog主要针对对话框,而OnCreate用于所有窗口。再说明一下他们还有Onsize的调用顺序,OnCreate > OnSize > OnInitDialog。
展开全部
一个类最基本就要有构造函数,这个构造函数就是为了对该类的实例进行初始化的工作,这是最先进行的
create函数:就使用来创建一个对话框!创建一个窗口!只是在内存中创建一个,并没有显现!
OnInitial函数:就是当这个对话框的控件全部加载完毕才调用这个函数,此时你可以调用在这个窗口上的子控件的所有能调用的东西
给你举个例子,如果你在构造函数弹出一个对话框估计实现不了,因为此时自己的窗口都没建好怎么能出来对话框呢,对吧
但是你在OnInitial却可以做到,因为这个时候窗口已经显现出来了,你当然可以弹出一个对话框了,希望你明白
create函数:就使用来创建一个对话框!创建一个窗口!只是在内存中创建一个,并没有显现!
OnInitial函数:就是当这个对话框的控件全部加载完毕才调用这个函数,此时你可以调用在这个窗口上的子控件的所有能调用的东西
给你举个例子,如果你在构造函数弹出一个对话框估计实现不了,因为此时自己的窗口都没建好怎么能出来对话框呢,对吧
但是你在OnInitial却可以做到,因为这个时候窗口已经显现出来了,你当然可以弹出一个对话框了,希望你明白
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询