windows API程序设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档