历史简介
很久以前系统不是32位也不是64位而是16位,它们的界面和dos命令窗口几近相同(其实就是),没有美丽的窗口,没有图形化界面,就只是黑乎乎的命令窗口,用键盘输入来实现控制,也压根没有鼠标这种东西,操作起来很是麻烦。直到32位系统windows95的出现,它的出现可谓开天辟地的大事变,友好的操作界面使得受众群体扩大到广大平民百姓,不需要背诵繁琐的命令语句,只用鼠标点击就可以实现各种操作,窗口化界面使得电脑有更多显示动能,实现超越文本的服务。windows95系统当然也就催生了win32程序的兴旺,这也是第一代程序员诞生的时期。随着win32编程的发展越来越多的对越来越多的代码量的反映使得各种win32编程框架出现,mfc就是其中之一,其余的桌面程序框架还有csharp,.net,qt等等。
DOS命令窗:
学习mfc先得了解win32。因为mfc可以说是win32程序编辑框架,但是平常的win32程序太复杂了,我们应该庆幸有越来越多的开发效率高的编程语言出现。废话不多说,几乎最小最短的代码先奉上,请过目:
#include "windows.h"LRESULT WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{switch (nMsg) {case WM_RBUTTONDOWN:{Beep(500, 203);break;}case WM_LBUTTONDOWN:Beep(1000, 200);}return DefWindowProc(hWnd, nMsg, wParam, lParam);
}
int WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{WNDCLASS wc = { 0 };HWND hWnd = 0;MSG nMsg = { 0 };wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = (WNDPROC)WndProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = NULL;wc.hCursor = NULL;wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);wc.lpszMenuName = NULL;wc.lpszClassName =L"Main";RegisterClass(&wc);hWnd = CreateWindow(L"Main", L"hWnd", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hInstance, NULL);ShowWindow(hWnd, SW_SHOW);while (GetMessage(&nMsg, NULL, 0, 0)){TranslateMessage(&nMsg);DispatchMessage(&nMsg);}return 0;
}
win32程序设计示例简介
【1】winmain函数是win32程序执行的开端就像是dos程序中的main函数
【2】win32程序中主要包含
(1)窗口的设计,c语言中没有类,对象,窗口是以结构体形式存在,给结构体的各个变量赋值其中包括窗口风格的型号,窗口大小,位 置,背 景颜色,窗口图标等等实现设计。
(2)窗口的注册和创建,窗口注册可以让系统完成窗口与消息处理函数的映射,让A窗口的消息交给A窗口的消息队列。创建使得窗口显示在我们的屏幕上。
(3)消息循环,在一个死循环中不断取得来自消息队列的消息
(4)消息处理函数,标明何种消息对应何种处理,属于回调函数,系统得知怎末处理后进行处理。
【3】Windows程序的运行是依靠外部的事件来驱动。换句话说,程序不断等待,等待任何可能的输入,然后做出判断,再做适当的处理。
系统接收客户的操作(事件),而后将各种复杂的事件以消息的形式传递给我们的程序,我们的程序再做出各种处理。这些处理当中的有一些是我们编辑完成,另外一些默认处理(框架本身自带的处理)即可我们不用碰。即使这样MFC开发工作量也不小。