windows API程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows API程序
设计
学院:
专业:
姓名:
学号:
2013 年05 月30 日
简单的Windows API程序设计
Windows 是一个基于图形界面的多用户多任务操作系统,它提供了许多可用于C++程序的设计资源对象,如菜单、对话框、工具按钮、光标、位图、字体等,在C++程序中可以直接应用这些对象,高效、快捷地设计出具有Windows风格的应用程序。
用VC++进行面向对象的Windows程序设计主要有两种方法:一种是使用Windows提供的API函数编程,称API程序设计;另一种是直接使用微软的MFC 类库编程,称为MFC程序设计。本次实验主要采用第一种方法利用Windows提供的API函数进行编程。
一、实验目的
本实验主要编写一个简单的 Windows API 程序。通过本实验你将能:
(1)了解 Windows API 程序的 VC++ 开发环境;
(2)学习开发简单的 Windows API 程序;
(3)理解 Windows 程序中的消息循环;
二、实验环境
电脑一台,Windows XP操作系统,VC++6.0编译环境。
三.实验内容及完成情况
编程过程如下:
(1)启动VC++6.0,选择菜单“文件|新建”,在弹出的“新建”对话框中选择“工程”标签页,如图(一)所示。
(2)选中“工程”对话框中的“Win32 Application”列表项,并在“位置”
编辑框中指定本项目建立的磁盘目录,然后在“工程”编辑框中输入项目文件的名字。
(3)单击“确定”按钮,并在弹出的对话框中选中“一个空工程。”单选项,然后单击“完成”按钮。最后将得到如图(二)所示的空项目文件窗口。
图(一)新建项目
(4)选择菜单“文件|新建”,然后在弹出的对话框中选择“文件”标签,并选择列表中的“C++ Source File”项目,然后在“文件”编辑框中输入源程
序文件名“API”如图(三)所示,输入完成后,单击“结束”按钮。
图(二)新建的空项目窗口
图(三)向空项目添加一个C++源文件
在API.cpp中输入下面的程序代码。
#include
#pragma comment(lib,"winmm.lib")
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCmdLine,int iCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName="lao zheng";
RegisterClass(&wndclass);
hwnd=CreateWindow("lao zheng",
TEXT("郑文超的简单程序设计"),
WS_OVERLAPPEDWINDOW /*& ~WS_MAXIMIZEBOX*/,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage (&msg,NULL,0,0))
{TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,
WPARAM wParam,LPARAM lParam)
{
HDC hdc;
HPEN hPen,hPenOld;
HBRUSH hBrush,HbruOld;
PAINTSTRUCT ps;
static POINT Rect[20],Elli[20]; //Rect保存矩形的鼠标点,Elli保存椭圆的鼠标点
static int n=0,m=0; //n、m分别用于记录Rect、Elli中点的个数int i,j;
switch(message) //消息处理
{
case WM_CREATE:
PlaySound(TEXT( "I:\\You Raise Me Up.wav"),NULL,SND_FILENAME|SND_ASYNC);
return 0;
case WM_LBUTTONDOWN:
Rect[n].x=LOWORD(lParam); //计算鼠标的x坐标
Rect[n].y=HIWORD(lParam); //计算鼠标的y坐标
InvalidateRect(hwnd,NULL,FALSE); //产生WM_PAINT消息
n++;
return 0;
case WM_RBUTTONDOWN:
Elli[m].x=LOWORD(lParam);
Elli[m].y=HIWORD(lParam);
InvalidateRect(hwnd,NULL,TRUE);
m++;
break;
case WM_PAINT:
HDC hdc;