使用API函数进行Windows程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一使用API函数进行Windows程序设计
实验目的:
了解Windos应用程序的一般步骤,使用API函数进行应用程序设计。
实验环境:
硬件环境:奔3以上处理器,512MB以上内存空间
软件环境:windows2000以上操作系统,VC6.0编译环境。
实验原理:
利用VC6.0开发环境,对实验所要求的程序设计项目,编辑C语言源程序并形成.cpp 源代码文件,再编译.cpp 文件形成.obj 目标代码文件,经过. obj文件与系统标准代码的连接形成.exe 可执行代码文件,运行.exe文件以得到实验所期望的结果。
实验内容与完成情况:
1、使用API函数建立Windows应用程序框架。主窗口的名称为“我的API函数”
2、在窗口中点击鼠标左键绘制一个圆,点击鼠标右键输出一段文字,其结果如下图所示:点击鼠标左键的结果:
点击鼠标右键:
源代码:
#include
//在此说明消息映射函数的回调函数以便在WinMain引用
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int i=0;
//------------ 以下对窗口的初始化----------------
// Windows的入口函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
LPSTR lpszCmdLine,int nCmdShow)
{
MSG Msg ;
//========窗口类的初始化=========
//声明一个窗口类
WNDCLASS wndclass ;
char lpszClassName[] = "简单窗口"; //窗口类名
wndclass.style = 0; //窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc ; //窗口处理函数为WndProc wndclass.cbClsExtra = 0 ; //窗口类无扩展
wndclass.cbWndExtra = 0 ; //窗口实例无扩展
wndclass.hInstance = hInstance ; //当前实例句柄
//窗口的最小化图标为缺省图标,这种图标是系统预定义图标
wndclass.hIcon = LoadIcon( NULL, IDI_APPLICA TION) ;
//窗口采用箭头光标,这种光标是系统预定义图标
wndclass.hCursor = LoadCursor( NULL,IDC_ARROW);
//使用系统定义的白色画刷为背景画刷
wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL ; //窗口中无菜单wndclass.lpszClassName = lpszClassName; //窗口类名为"简单窗口"
//========窗口类的初始化完成=========
//========窗口类的注册============
if(!RegisterClass( &wndclass))
{
//注册失败后返回
return FALSE ;
}
//========窗口类注册完成===========
//========窗口创建==============
HWND hwnd ; //定义窗口句柄
char lpszTitle[]= "我的API函数"; //窗口标题名
hwnd=CreateWindow(
lpszClassName, //窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口的高和宽为缺省值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL) ; //不使用该值
//========窗口创建完成=============
//========窗口显示===============
ShowWindow( hwnd, nCmdShow); //显示窗口
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)
{
PAINTSTRUCT pt;
HDC hDC;
HBRUSH hBrush;
HFONT hFont;
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0); //调用PostQuitMessage发出WM_QUIT消息
break;
case WM_PAINT:
hDC=BeginPaint(hwnd,&pt);
if (i==1)
{
//得到系统的绿色画刷
hBrush=CreateSolidBrush(RGB(0,255,0));
//把画刷选入设备环境句柄
SelectObject(hDC,hBrush);
//画圆
Ellipse(hDC,100,100,200,200);
}
else if (i==2)
{
hFont=::CreateFont