1.HINSTANCE和HMODULE讲解
- HINSTANCE用于exe,HMODULE用于dll,本质上是一样的,代表的是PE模块映射到进程虚拟地址空间中的地址,这点可以通过vmmap.exe验证;
- 我们可以固定住模块基地址,dll和exe都可以导出函数,
- 导出函数的地址=PE在进程中映射的基地址+该函数在该PE文件里面的偏移地址。
- dumpbin的演示,判断dll的位数(32位还是64位),导入和导出函数
- 以此来说明Depends工具可以自己编写出来。
2.窗口类的设计、注册、显示窗口,更新窗口,消息循环
每个ui线程都有一个消息队列,GetMessage从队列中取出消息,分发到窗口类的回调函数中进行处理,当关闭窗口时,会调用DestroyWindow函数,此函数销毁窗口后,会触发PostQuitMessage,导致GetMessage收到WM_QUIT消息,为此消息循环结束,主线程终止,进程终止
3.非界面线程中创建窗口
- 非界面线程中也能创建窗口,并且创建窗口的响应函数在该线程里面执行,这点和qt中一样。
- qt中哪个线程创建qt object,该qt object的槽函数就在哪个线程里面执行
- 尽量不要使用非界面线程创建窗口函数
4.MFC中的主窗口
- win32消息中,创建多个窗口时,关闭任意一个窗口都会导致程序退出
- 而在MFC中,对win32进行了封装,创造出主窗口的概念,只要主窗口在,程序不会退出,MFC中主窗口的名称是m_pMainWnd