dos,win32,MFC区别:
dos :只能调用cruntime 函数,不能调用win32 api.程序进入点为 main。
win32 console :可以调用 cruntime和win32,但是没有GUI的函数.程序进入点为CreateProcess起进程,
然后CreateThread起线程再 调用WinMain。
MFC:基于cruntime和Win32 API的applicationframework和util。
win32和MFC都是基于消息的,OS将消息放入进程队列中,应用程序来读取。
进队消息:Windows放入消息队列中的由应用程序调用的消息(如:WM_LBUTTOMDOWN)。
不进队消息:不放入消息队列中,由OS直接调用窗口过程函数的消息(如:WM_CREATE,WM_SHOWWINDOW)。
无论进队与否还是由窗口函数来处理。
用户的自定义消息要送给消息处理函数时就要调用SendMessage后让Windows调用消息处理函数。
windows编程主要是3个模块 KERNEL32.dll USER32.dll GDI32.dll
window.h总体包含的头文件 WINBASE.h(内核函数) WINUSER.h(界面,用户接口函数) WINGDI.h(图形绘制函数)
WINDEF.h(基本类型定义和win32要使用的数据结构) WINNT.h(unicode类型定义)
要使用标准的c函数就要自行包含c的头文件。
窗口类是WNDCLASS的数据结构,用于注册;窗口句柄窗口类的一个实例(一个32位的数字);一个窗口类可以注册多个窗口句柄实例。
如果要自己绘制控件,则在创建控件子窗口时的要设置一个BS_OWNERDRAW,则当控件子窗口要重画时父窗口的处理函数会收到WM_DRAWITEM消息,在这个地方处理重绘。
MFC的消息机制:WM消息响应函数是虚方法,子实现了就子方法处理,子没有实现由继承的方法处理。
VM是是虚方法(拦截器方法),子实现了就子方法处理,子没有实现由继承的方法处理。
ON_COMMAND处理方法一般是一个类单独的方法。