win32 实验一熟悉了解最基本构成的Windows窗口应用程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业课程实验报告
课程名称: Windows程序设计
开课学期: 2015 至 2016 学年第 1 学期专业:网络工程年级班级: 2013
学生姓名:学号:
实验教师:刘红俊
计算机与信息科学学院软件学院
实验内容
程序源码:
#include
#include
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(//入口函数: WINAPI调用约定 __stdcall的#define
HINSTANCE hInstance, //当前实例句柄
HINSTANCE hPrevInstance, //上一实例句柄为了和Win 3.1兼容,在Win32的程序中此参数无用,总是NULL
LPSTR lpCmdLine,// 向字符串的指针,用来保存运行程序时的命令行参数
int nCmdShow// 指定程序开始的时候如何显示
)
//-------------------初始化窗口类--------------------
{
WNDCLASSEX wcex;
/*
typedef struct tagWNDCLASSA
{
UNIT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
}
WNDCLASSA,* PWNDCLASSA, NEAR * NPWNDCLASSA, FAR * LPWNDCLASSA;
*/
HWND hWnd;
MSG msg;
TCHAR szWindowClass[] = L"显示窗口";
TCHAR szTitle[] = L"My Windows";
wcex.cbSize = sizeof(WNDCLASSEX);//窗口类的大小
wcex.style = 0;//定义窗口类型
wcex.lpfnWndProc = WndProc;//定义窗口的消息处理函数为WndProc
wcex.cbClsExtra = 0;//类预留空间,0为不预留
wcex.cbWndExtra = 0;//实例预留空间,0为不预留
/*cbClsExtra 和 cbWndExtra 可以存放额外信息
类型都为int 主要用于存储数据大小用法:
int nClsExtra = 100; //数据大小
cosnt TCHAR pcszClassName[] = _T("ClassName");
WNDCLASSEX* pClsExtra = (WNDCLASSEX*)new char[sizeof(WNDCLASSEX) + nClsExtra];
memset(pClsExtra, 0, sizeof(WNDCLASSEX) + nClsExtra);
char* pClsData = (char*)pClsExtra + sizeof(WNDCLASSEX);
// 这里,pClsData就可以保存额外的100字节数据,*/
wcex.hInstance = hInstance;//实例句柄
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));//窗口图标wcex.hCursor = LoadCursor(NULL, IDC_ARROW);//鼠标光标形状
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置窗口背景颜色
wcex.lpszMenuName = NULL;//设置窗口菜单,由于此例程不使用菜单所以设置为NULL
wcex.lpszClassName = szWindowClass;//定义窗口类的名称 TCHAR szWindowClass[] = L"显示窗口"
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
//设置窗口小图标为默认图标 win4.0
//--------------注册窗口------------------
//使用RegisterClass()函数注册窗口类
if (!RegisterClassEx(&wcex)){
MessageBox(NULL, _T("创建窗口失败!"), _T("窗口注册"), NULL);
return 1;
}
//---------------创建窗口----------------
//使用CreateWindow()函数来完成
hWnd = CreateWindow(
szWindowClass,//窗口类的名称
szTitle,//窗口的标题
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT, CW_USEDEFAULT,//窗口的坐标X,Y
CW_USEDEFAULT, CW_USEDEFAULT,//窗口的宽度、高度
NULL,//父窗口句柄
NULL,//窗口的菜单句柄
hInstance,//窗口的句柄
NULL//参数指针
);
if (!hWnd){
MessageBox(NULL, L"创建窗口失败", _T("创建窗口"), NULL);
return 1;
}
ShowWindow(hWnd, nCmdShow);/*创建完成窗口后Windows并没有将其显示到显示器上,只是在内存中保存了这个窗口的全部信息,
要显示这个窗口,需要使用 ShowWindow(hwnd,iCmdShow) 函数.