應(yīng)用程序框架:
同一類型應(yīng)用程序的結(jié)構(gòu)大致相同,并有很多相同的源代碼,
因此可以通過一個應(yīng)用程序框架AFX(Application FrameWorks)
編寫同一類型應(yīng)用程序的通用源代碼。
主要向?qū)?#xff1a;
Datebase Project:創(chuàng)建數(shù)據(jù)庫項(xiàng)目
MFC ActiveX Control Wizard:創(chuàng)建基于MFC的ActiveX控件
MFC AppWizard[dll]:創(chuàng)建基于MFC的動態(tài)鏈接庫
MFC AppWizard[exe]:創(chuàng)建基于MFC的應(yīng)用程序(最常用)
New Database Wizard:在SQL服務(wù)器上創(chuàng)建一個SQL Server數(shù)據(jù)庫
Win32 Application:創(chuàng)建Win32應(yīng)用程序,可不使用MFC,采用SDK方法編程
Win32 Console Application:創(chuàng)建DOS下的Win32控制臺應(yīng)用程序,
采用C++或C語言進(jìn)行編程
Win32 Dynamic-link Library:創(chuàng)建Win32動態(tài)鏈接庫,采用SDK方法
Win32 Static Library:創(chuàng)建Win32靜態(tài)鏈接庫,采用SDK方法
引入應(yīng)用程序向?qū)У哪康?#xff1a;為了避免程序員重復(fù)編寫代碼。
區(qū)別于DOS程序,即使一個簡單的Windows程序:
它也必須顯示一個程序運(yùn)行窗口,需要編寫復(fù)雜的程序代碼。
而同一類型應(yīng)用程序的框架窗口風(fēng)格是相同的,如相同的菜單欄、工具欄、
狀態(tài)欄和用戶區(qū)。
基本菜單命令的功能也是一樣的,如相同的文件操作和編輯命令。
編寫一個實(shí)現(xiàn)具體功能的MFC應(yīng)用程序的步驟:
★根據(jù)應(yīng)用程序特性在MFC AppWizard[exe]應(yīng)用程序向?qū)Ц鞑襟E對話框中進(jìn)行選擇,
創(chuàng)建一個應(yīng)用程序的框架。
★利用資源編輯器為程序編輯或添加資源,如編輯菜單、添加對話框等。
★利用ClassWizard類向?qū)Щ蚴止ぬ砑宇悺⒊蓡T變量和成員函數(shù)的聲明。
★根據(jù)需要編寫具體的函數(shù)代碼。
★編譯、鏈接程序。如果程序有語法錯誤,需要修改源程序。直到?jīng)]有編譯、鏈接錯誤,
才能得到可執(zhí)行程序。
★測試應(yīng)用程序各項(xiàng)功能,如果程序沒有實(shí)現(xiàn)程序設(shè)計所要求的功能,啟動Debug調(diào)試器
進(jìn)行調(diào)試,找出并修改程序設(shè)計中的邏輯錯誤。
我們可以為Visual C++ MFC編程作一個形象的總結(jié):
◇MFC應(yīng)用程序框架使我們的程序設(shè)計工作猶如做填充題。
◇Developer Studio中的集成工具使我們的程序設(shè)計工作猶如做選擇題,
程序員猶如軟件集成裝配車間里的技術(shù)工人。
Visual C++中通用的文件類型
后綴 類型 說明
dsw 工作區(qū)文件 將項(xiàng)目的詳細(xì)情況組合到工作區(qū)中
dsp 項(xiàng)目文件 存儲項(xiàng)目的詳細(xì)情況并替代mak文件
h C++頭文件 存儲類的定義代碼
cpp C++源文件 存儲類的成員函數(shù)的實(shí)現(xiàn)代碼
rc 資源腳本文件 存儲菜單、工具欄和對話框等資源
rc2 資源文件 用來將資源包含到項(xiàng)目中
ico 圖標(biāo)文件 存儲應(yīng)用程序圖標(biāo)
bmp 位圖文件 存儲位圖
clw 類向?qū)募?存儲ClassWizard類向?qū)褂玫念愋畔?/p>
MFC中資源標(biāo)識符前綴
標(biāo)識符前綴 說明
IDR_ 主菜單、工具欄、應(yīng)用程序圖?
標(biāo)和快捷鍵表
IDD_ 對話框
IDC_ 控件和光標(biāo)
IDS_ 字符串
IDP_ 提示信息對話框的字符串
ID_ 菜單命令項(xiàng)
應(yīng)用程序舉例:
例1:創(chuàng)建應(yīng)用程序框架。
本例的目的在于說明創(chuàng)建Windows應(yīng)用程序的方法及過程
1 //包含應(yīng)用程序所需的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的定義2 #include <windows.h>3 4 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函數(shù)說明5 6 //----------------------以下初始化窗口類-------------------------7 int WINAPI WinMain8 (9 HINSTANCE hInstance,
10 HINSTANCE hPrevInst,
11 LPSTR lpszCmdLine,
12 int nCmdShow
13 )
14 {
15 HWND hw
16 nd;
17 MSG Msg;
18 WNDCLASS wndclass;
19 char lpszClassName[] = "窗口"; //窗口類名
20 char lpszTitle[] = "My_windows"; //窗口標(biāo)題名
21
22 //------------------窗口類的定義---------------------------
23 wndclass.style=0; //窗口類型為缺省類型
24 wndclass.lpfnWndProc=WndProc; //定義窗口處理函數(shù)
25 wndclass.cbClsExtra=0; //窗口類無擴(kuò)展
26 wndclass.cbWndExtra=0; //窗口實(shí)例無擴(kuò)展
27 wndclass.hInstance=hInstance; //當(dāng)前實(shí)例句柄
28 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
29 //窗口的最小化圖標(biāo)為缺省圖標(biāo)
30 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ;
31 //窗口采用箭頭光標(biāo)
32 wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
33 //窗口背景為白色
34 wndclass.lpszMenuName=NULL; //窗口中無菜單
35 wndclass.lpszClassName=lpszClassName ; //窗口類名為"窗口"
36
37 //------------------以下進(jìn)行窗口類的注冊------------
38 if(!RegisterClass(&wndclass))//如果注冊失敗則發(fā)出警告
39 {
40 MessgaeBeep(0);
41 return FALSE;
42 }
43 //--------------------創(chuàng)建窗口-------------------------
44 hwnd = CreateWindow
45 (
46 lpszClassName, //窗口類名
47 lpszTitle, //窗口實(shí)例的標(biāo)題名
48 WS_OVERLAPPEDWINDOW, //窗口的風(fēng)格
49 CW_USEDEFAULT,
50 CW_USEDEFAULT, //窗口左上角坐標(biāo)為缺省值
51 CW_USEDEFAULT,
52 CW_USEDEFAULT, //窗口的高和寬為缺省值
53 NULL, //此窗口無父窗口
54 NULL, //此窗口無主菜單
55 hInstance, //創(chuàng)建此窗口的應(yīng)用程序的當(dāng)前句柄
56 NULL //不使用該值
57
58 );
59 //------------------------顯示窗口-----------------------
60 ShowWindow(hwnd,nCmdShow);
61
62 //------------------------繪制用戶區(qū)---------------------
63 UpdateWindow(hwnd);
64 //------------------------消息循環(huán)-----------------------
65 while(GetMessage(&Msg,NULL,0,0))
66 {
67 TranslateMessage(&Msg);
68 DispatchMessage(&Msg);
69 }
70
71 //消息循環(huán)結(jié)束即程序終止時將消息返回操作系統(tǒng)
72 return Msg.wParam;
73 }
74
75 //---------------------------------窗口函數(shù)--------------------
76 LRESULT CALLBACK WndProc
77 ( HWND hwnd,
78 UINT message,
79 WPARAM wParam,
80 LPARAM lParam
81 )
82
83 {
84 switch(message)
85 {
86 case WM_DESTROY:
87 PostQuitMessage(0);//調(diào)用PostQuitMessage發(fā)出VM_QUIT消息
88 default: //缺省時采用系統(tǒng)消息缺省處理函數(shù)
89 return DefWindowProc(hwnd,message,wParam,lParam);
90 }
91 return(0);
92 }
總結(jié)
以上是生活随笔為你收集整理的windows应用程序框架及实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。