一、实验目的和要求
(一)熟悉 Visual C++集成开发环境。工欲善其事,必先利其器。同样,想要熟练地编程,首要条件是要熟悉编程环境。因此本实验需要快速掌握创建Win32Application 的步骤。
(二)创建一个 Win32 应用程序,创建一个标题名为“上机指导”、窗口内容显示“上机指导--实验二”的Wim32应用程序。通过该实验,可以理解Windows应用程序的组成及其创建过程。
(三)创建一个Win32应用程序,其窗口内容显示一个由组成的矩形。通过该实验,可以理解Windows应用程序的组成及其创建过程。
二、实验环境
Windows 7; VC++6.0
三、实验内容与过程
实验内容(一)
创建一个名为 myfirst 的工程,部分界面如下图所示。
实验内容(二)
创建一个名为 Win32 的应用程序,程序的运行结果如下图所示。
实验内容(三)
创建一个以自己的姓名为标题名的 Win32 的应用程序,程序的运行结果如下图所示。
一、实验结果与分析
实验内容(一)
实验内容(二)
实验内容(三)
实验内容二代码:
#include<windows.h>
//声明WndProc()函数
LRESULT CALLBACK WndProc(
HWND hwnd,UINT message,
WPARAM wParam,
LPARAM lParam);
//编写WinMain()主函数
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndclass; //定义窗口类结构变量
HWND hwnd; //定义窗口句柄
MSG msg; //定义消息结构变量
char lpszClassName[]="自己创建的窗口";
//设计窗口类型
wndclass.style = CS_HREDRAW|CS_VREDRAW; //改变窗口大小则重画
wndclass.lpfnWndProc = WndProc; //窗口函数为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 =lpszClassName;
//注册窗口类型
if(! RegisterClass(&wndclass))
return FALSE;
//创建窗口
hwnd = CreateWindow(lpszClassName,
"上机指导",
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)
{
//根据消息值转相应的消息处理
switch (message)
{
//重画窗口客户区消息处理
case WM_PAINT:
HDC hdc; //定义设备描述表句柄
PAINTSTRUCT ps; //定义绘图信息结构变量
hdc = BeginPaint (hwnd,&ps); //获取要重画的窗口的设备描述表句柄
TextOut(hdc,150,150,"上机指导——实验二", 18); //输出文本
EndPaint (hwnd,&ps);
break;
//响应鼠标单击消息
case WM_LBUTTONDOWN:
{
MessageBeep(0);
}
break;
//撤消窗口消息处理
case WM_DESTROY:
PostQuitMessage (0);
break;
//其它转缺省窗口函数
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
实验内容三代码:
#include<windows.h>
//声明WndProc()函数
LRESULT CALLBACK WndProc(
HWND hwnd,UINT message,
WPARAM wParam,
LPARAM lParam);
//编写WinMain()主函数
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndclass; //定义窗口类结构变量
HWND hwnd; //定义窗口句柄
MSG msg; //定义消息结构变量
char lpszClassName[]="自己创建的窗口";
//设计窗口类型
wndclass.style = CS_HREDRAW|CS_VREDRAW; //改变窗口大小则重画
wndclass.lpfnWndProc = WndProc; //窗口函数为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 =lpszClassName;
//注册窗口类型
if(! RegisterClass(&wndclass))
return FALSE;
//创建窗口
hwnd = CreateWindow(lpszClassName,
"董阳萱",
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)
{
//根据消息值转相应的消息处理
switch (message)
{
//重画窗口客户区消息处理
case WM_PAINT:
HDC hdc; //定义设备描述表句柄
PAINTSTRUCT ps; //定义绘图信息结构变量
hdc = BeginPaint (hwnd,&ps); //获取要重画的窗口的设备描述表句柄
TextOut(hdc,150,150,"***************", 15);
TextOut(hdc,150,160,"* *", 22);
TextOut(hdc,150,170,"* *", 22);
TextOut(hdc,150,180,"* *", 22);
TextOut(hdc,150,190,"* *", 22);
TextOut(hdc,150,200,"* *", 22);
TextOut(hdc,150,210,"* *", 22);
TextOut(hdc,150,220,"* *", 22);
TextOut(hdc,150,230,"* *", 22);
TextOut(hdc,150,240,"* *", 22);
TextOut(hdc,150,250,"***************", 15); //输出文本
EndPaint (hwnd,&ps);
break;
//响应鼠标单击消息
case WM_LBUTTONDOWN:
{
MessageBeep(0);
}
break;
//撤消窗口消息处理
case WM_DESTROY:
PostQuitMessage (0);
break;
//其它转缺省窗口函数
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}