1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > windows应用程序框架及实例

windows应用程序框架及实例

时间:2019-01-16 03:50:48

相关推荐

windows应用程序框架及实例

应用程序框架:

同一类型应用程序的结构大致相同,并有很多相同的源代码,

因此可以通过一个应用程序框架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 nCmdShow13 )14 {15 HWND hw16 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 = CreateWindow45 (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 WndProc77 ( HWND hwnd,78 UINT message,79 WPARAM wParam,80 LPARAM lParam81 )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 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。