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