动手写第一个windows程序 新建一个窗口
2015-07-14 21:25
423 查看
主要熟悉windows窗口的一些窗口类,显示等,比较简单,注释比较详细了;
主要参考书籍:VC++深入详解
#include<Windows.h> #include<stdio.h> // 函数声明 LRESULT CALLBACK WinCipher( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); //主函数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { /* typedef struct _WNDCLASS { UINT style; //窗口的类型 WNDPROC lpfnWndProc; //窗口过程函数指针(回调函数) int cbClsExtra; //窗口类附加字节,为该类窗口所共享。通常0。 int cbWndExtra; //窗口附加字节。通常设为0。 HANDLE hInstance; //当前应用程序事例句柄。 HICON hIcon; //图标句柄 LoadIcon(); HCURSOR hCursor; //光标句柄 LoadCursor(); HBRUSH hbrBackground; //画刷句柄 (HBRUSH)GetStockObject(); LPCTSTR lpszMenuName; //菜单名字 LPCTSTR lpszClassName; //类的名字 } WNDCLASS; */ //设计一个窗口类 WNDCLASS wndcls; wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);// 画刷句柄 wndcls.hCursor = LoadCursor(NULL, IDC_CROSS); //光标句柄 wndcls.hIcon = LoadIcon(NULL, IDI_ERROR); //图标句柄 wndcls.hInstance = hInstance; //当前应用程序事例句柄 wndcls.lpfnWndProc = WinCipher; //窗口过程函数指针(回调函数) wndcls.lpszClassName = "cipher";//类的名字 wndcls.lpszMenuName = NULL;//菜单名字 wndcls.style = CS_HREDRAW | CS_VREDRAW;//窗口的类型 RegisterClass(&wndcls); //创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄 HWND hwnd; hwnd = CreateWindow("cipher", "程序员之家", WS_OVERLAPPEDWINDOW,0, 0, 600, 400, NULL, NULL, hInstance, NULL); //CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) //显示及刷新窗口 ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd); //定义消息结构体,开始消息循环 MSG msg; while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); //进行消息(如键盘消息)转换 DispatchMessage(&msg);//分派消息到窗口的回调函数处理,(OS调用窗口回调函数进行处理)。 } return msg.wParam; } //编写窗口过程函数 函数定义 LRESULT CALLBACK WinCipher( HWND hwnd,//窗口句柄 UINT uMsg,//消息代码 WPARAM wParam,//两个参数 LPARAM lParam ) { switch (uMsg) { case WM_CHAR://用户在窗口按下字符键 通过translateMessage得到,messageBOx弹出一个消息框 char szChar[30]; sprintf_s(szChar, "你按下的字符是: %c", wParam); MessageBox(hwnd, szChar, "提示", 0); break; case WM_LBUTTONDOWN ://用户点击左键 MessageBox(hwnd, "你的鼠标点击了左键", "提示", 0); HDC hdc; hdc = GetDC(hwnd);//使用DC操作图形 TextOut(hdc, 0, 30,"小人物点击了鼠标左键,真棒", strlen("小人物点击了鼠标左键,真棒"));//在窗口中0,30处显示一段代码 break; case WM_RBUTTONDOWN: MessageBox(hwnd, "你的鼠标点击了右键", "提示", 0); HDC hdc2; hdc2 = GetDC(hwnd);//使用DC操作图形 TextOut(hdc2, 0, 50, "小人物点击了鼠标右键,真棒", strlen("小人物点击了鼠标右键,真棒"));//在窗口中0,50处显示一段代码 break; case WM_PAINT ://当窗口从无到有,改变尺寸,最小化恢复,遮盖再显示,发送该消息,通知重绘 HDC hDC; PAINTSTRUCT ps; hDC = BeginPaint(hwnd,&ps); TextOut(hDC, 0, 0, "窗口新建了或者刷新了", strlen("窗口新建了或者刷新了")); EndPaint(hwnd, &ps); break; case WM_CLOSE://点击了关闭按钮 HDC hdc3; hdc3 = GetDC(hwnd); TextOut(hdc3, 0, 70, "小人物点击了关闭按钮,确认关闭?", strlen("小人物点击了关闭按钮,确认关闭?")); if (IDYES==MessageBox(hwnd,"是否真的关闭窗口?","message",MB_YESNO)) { DestroyWindow(hwnd); } break; case WM_DESTROY: PostQuitMessage(0);//向应用程序消息队列投递一个WM_QUIT消息 break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam);//调用默认的窗口过程 } return 0; }
主要参考书籍:VC++深入详解
相关文章推荐
- 手机号抽奖
- NSString字符串与数组
- 在heroku上使用远程mysql Connect To Remote MySQL Database From Heroku
- 获得spring容器上下文
- Php基础字符串篇
- #import和#include和@class用法
- windows下静默安装oracle
- 读《白帽子讲Web安全》笔记
- image处理
- C语言程序基础4.5
- java高新技术上《九》
- C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
- Dev日常学习记录
- String转换为JSON以及时间的格式化
- .msi安装包安装方法(安装错误2503和2502)
- Inflater
- 原型图的团队设计
- 南阳理工845 无主之地1
- TJU-3851Variable Names(贪心)
- UiAutomator喷射事件的源代码分析