关于MFC的运行机制中的窗口注册的问题
我知道程序怎么从theapp对象到winmain到消息循环我都知道但就是窗口的注册我不知道哪调用的?谁调用的窗口注册类的函数我知道AfxEndDeferRegisterC...
我知道程序怎么从theapp对象 到winmain 到消息循环 我都知道
但就是窗口的注册我不知道哪调用的?谁调用的
窗口注册类的函数我知道
AfxEndDeferRegisterClass()
但是我不知道这个函数是谁调用的
比如我新建一个MFC的单文档
程序的运行是不是这样的啊?先是 全局的对象的产生就是theapp 然后进入CWinApp的构造函数在构造函数中初始化一些变量 然后进入进程入口函数winmain 在afxwinmain中进行一些操作 包括其中的afxwinlnit来初始化框架和消息循环 然后在initinstance中进行产生窗口 然后我就不知道了 这一句在哪出现的啊CWnd* pWnd= new CWnd pWnd->Create() -> CreateEx ->PreCreateWindow(); 展开
但就是窗口的注册我不知道哪调用的?谁调用的
窗口注册类的函数我知道
AfxEndDeferRegisterClass()
但是我不知道这个函数是谁调用的
比如我新建一个MFC的单文档
程序的运行是不是这样的啊?先是 全局的对象的产生就是theapp 然后进入CWinApp的构造函数在构造函数中初始化一些变量 然后进入进程入口函数winmain 在afxwinmain中进行一些操作 包括其中的afxwinlnit来初始化框架和消息循环 然后在initinstance中进行产生窗口 然后我就不知道了 这一句在哪出现的啊CWnd* pWnd= new CWnd pWnd->Create() -> CreateEx ->PreCreateWindow(); 展开
2个回答
展开全部
theapp 是应用线程,winmain是进程入口。这些是管理资源消息循环等的。跟窗口创建没关系
窗口的创建过程
CWnd* pWnd= new CWnd
pWnd->Create() -> CreateEx ->PreCreateWindow();
PreCreateWindow 里面调 AfxDeferRegisterClass 来执行注册。
AfxDeferRegisterClass 又调用了 AfxEndDeferRegisterClass;
当然MFC的控件类字符串都是在里面预定义的,所以AfxDeferRegisterClass 的参数都是预定义宏。
如果自己定义的窗口(并不是简单的对CButton,CStatic等控件的扩展,那些一般只是覆盖了窗口的消息处理函数,窗口类并没有变),必须自己手动注册了,才能Create
窗口的创建过程
CWnd* pWnd= new CWnd
pWnd->Create() -> CreateEx ->PreCreateWindow();
PreCreateWindow 里面调 AfxDeferRegisterClass 来执行注册。
AfxDeferRegisterClass 又调用了 AfxEndDeferRegisterClass;
当然MFC的控件类字符串都是在里面预定义的,所以AfxDeferRegisterClass 的参数都是预定义宏。
如果自己定义的窗口(并不是简单的对CButton,CStatic等控件的扩展,那些一般只是覆盖了窗口的消息处理函数,窗口类并没有变),必须自己手动注册了,才能Create
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询