C++与C开发windows应用程序的区别
C语言:
使用一个窗口句柄HWND完成窗口的各种操作(WND是windows的内部私有结构)
C++:
使用CWnd
Windows窗口和CWnd的区别
CWnd由构造函数创建;
Windows窗口由CWnd的Create函数创建
CWnd类
操作一个HWND类型的数据成员:m_hWnd.
◆句柄和指针的区别
指针对应一个数据在内存中的地址,指针可以自由修改数据
句柄并不能直接操作它,而是通过调用相应的API函数来操作。
句柄映射机制(内部实现机制)
MFC使用一个CHandleMap来将窗口句柄映射到C++窗口对象;
(问题:这个CHandleMap是不是仅有一个单件类?还是每次创建一个MFC类就创建一个CHandleMap?)
这部分不是很懂。
MFC与线程
MFC规定,
1. 非MFC线程不能创建和访问MFC对象。
(问题:什么是MFC线程?怎样创建?)
回答:只有通过CWinThread创建的对象才可以访问MFC线程对象和使用MFC对象。
(问题:这个CWinThread到底是何方神圣?)
感觉CWinThread是c++里负责创建线程的类。
2. 一个线程仅能访问它自己创建的MFC对象;
模块-线程状态的创建
它在CWinApp的构造函数里完成。
MFC应用程序会自动生成一个theApp,比WinMain还早被创建。