windows编程笔记(二)HelloWin
来源:互联网 发布:echo php 编辑:程序博客网 时间:2024/05/19 14:36
以上为windows程序的基本结构。
//windows程序的基础代码 #include<windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//回调函数声明 int WINAPI WinMain(HINSTANCE hInstance, // 程序的当前实例句柄 HINSTANCE hPrevInstance, // 程序的上一个实例句柄 , 在win32程序中 , 它始终是NULL PSTR szCmdLine, // 命令行 int iCmdShow) // 窗口显示状态 { static TCHAR szAppName[] = TEXT("HelloWin"); //以'\0'字符结尾的字符串 , 这里是程序的名称(实际用作后面的窗口类的名字) HWND hwnd; //窗口句柄 MSG msg; //消息结构体 WNDCLASS wndclass; //窗口类 wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口类的风格 wndclass.lpfnWndProc = WndProc; //窗口类绑定的回调函数(也称为窗口过程) wndclass.cbClsExtra = 0; //窗口类额外参数(默认为0) wndclass.cbWndExtra = 0;//窗口类额外参数(默认为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 = szAppName; //窗口类的名字 if(!RegisterClass(&wndclass))//注册窗口类 { MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } //这里创建的是一段内存 , 用于存储创建窗口的信息 , 同时返回该窗口的一个句柄(窗口的标示) hwnd = CreateWindow(szAppName, //窗口类的名字 TEXT("The Hello Program"), //窗口名称(标题栏显示的内容) WS_OVERLAPPEDWINDOW, //窗口的风格 CW_USEDEFAULT, //窗口x坐标 CW_USEDEFAULT, //窗口y坐标 CW_USEDEFAULT, //窗口宽度 CW_USEDEFAULT, //窗口长度 NULL, //父窗口句柄 NULL, //菜单句柄 hInstance, //程序的当前实例 NULL); //窗口创建数据 /* 程序运行完CreateWindow , 还没运行ShowWindow时 , windows向窗口的WndProc发送了第一条消息: WM_Create */ ShowWindow(hwnd, iCmdShow); //显示窗口 UpdateWindow(hwnd); //更新窗口 /* 运行完UpdateWindow后 , windows向窗口的WndProc 发送了第二条消息: WM_PAINT . 如果ShowWindow没有调用或是调用失败 , WM_PAINT消息是不会发送的*/ //消息循环 while(GetMessage(&msg, NULL, 0, 0))//这里的NULL不能写成hwnd , 否则程序不能正常运行 { TranslateMessage(&msg);//转换键盘消息 DispatchMessage(&msg);//将消息传送给windows(os) , 由windows来回调 } return msg.wParam;//结束返回 } //窗口过程(回调函数) LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; //设备句柄 PAINTSTRUCT ps; //包含窗口客户区绘制的信息 是一个结构体 RECT rect; //矩形(两个点) //这里是消息处理 switch(message) { //窗口创建消息 case WM_CREATE: //PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;//播音 return 0 ; //窗口客户区重绘消息 case WM_PAINT: PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;//播音 hdc = BeginPaint(hwnd, &ps);//获取设备句柄 , 开始重绘 GetClientRect(hwnd, &rect);//获取客户区的大小 DrawText(hdc, TEXT("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);//绘制一个字符串 EndPaint(hwnd, &ps);//结束重绘 return 0; //窗口退出消息 case WM_DESTROY: PostQuitMessage(0);//发送退出消息 return 0; } return DefWindowProc(hwnd, message, wParam, lParam); //windows对于消息的默认处理 //(注意: 第三个和第四个参数不能传递错误!!!) }
阅读全文
0 0
- windows编程笔记(二)HelloWin
- hellowin -windows菜单编程
- windows程序设计 and windows核心编程(HELLOWIN例程)
- HELLOWIN程序详细注释——《Windows程序设计》阅读笔记
- HELLOWIN程序详细注释——《Windows程序设计》阅读笔记
- windows 程序设计 hellowin
- windows程序设计 HELLOWIN程序
- 《windows核心编程》笔记(二)
- Windows高级编程学习笔记(二)
- windows程序设计(1):我对hellowin程序的解读
- Windows核心编程笔记(二)
- windows核心编程(笔记二)
- 【windows】创建hellowin的窗口
- HELLOWIN(2)
- windows驱动编程学习笔记——(二)
- 网络编程 笔记(二) 基于 Windows简单通信
- Windows核心编程笔记(二十) 窗口与消息
- 网络编程 笔记(二) 基于 Windows简单通信
- 笛卡尔集错误
- 并查集&欧拉路
- c语言遍历二叉树实现
- 典型题目
- 我对Maven的理解
- windows编程笔记(二)HelloWin
- 吴恩达 机器学习笔记六(lecture 6)(逻辑回归LR)
- 【持续更新】Eclipse使用教程
- Ah! I am afraid, and I do tremble, Signor, for I am only a girl
- PHP之SVN的使用
- Java-11.26
- 《数据挖掘与商务分析R语言》-1-数据预处理-R语言-Lattice包-条形图
- Java多线程(1) 线程的启动和中断
- 最新微信H5牛牛liunx版五大神兽牛牛金花三公带胜率透视版搭建教程