空白项目+win32代码=窗口
2016-02-19 10:58
148 查看
创建空项目 ==> 添加main.cpp(win32代码),创建空窗体。
程序输出:
通过代码生成窗口:
#include<Windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // WinMain函数 /* (w)WinMain 函数有四个参数,其定义如下: HINSTANCE hInstance: 应用程序当前实例的句柄(译者注:了解 Win32 的基本知识最好是看 Windows 程序 设计第五版)。 HINSTANCE prevInstance:应用程序的前一个实例的句柄。 根据 MSDN 的文档现在此参数将一直是 NULL。 虽然此参数一直是 NULL,如果你想要确定该应用程序是否已经有实例在运行,文档推荐使用 CreateMutex 函数来创建唯一名字的 mutex(互斥体)。 当已经有实例运行时,再次创建 mutex, CreateMutex 函数将会返 回 ERROR_ALREADY_EXISTS。 LPSTR cmdLine (或使用 Unicode 编码的 LPWSTR):应用程序的命令行由程序外部输入。允许你传递命令给程 序,例如通过 cmd 命令终端,或者是通过快捷方式提供命令参数,等等。 int cmdShow:窗口被显示为哪个模式的 ID 号(译者注:例如最小化,正常,最大化等)。 */ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR cmdLine, int nShow){ UNREFERENCED_PARAMETER(hPrevInstance); // 消除编译时未被函数使用的参数所产生的警告 UNREFERENCED_PARAMETER(cmdLine); WNDCLASSEX wndClass = {0}; wndClass.cbSize = sizeof(WNDCLASSEX); // 创建一个窗口类wndClass,该类的大小是WNDCLASSEX的大小 wndClass.style = CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WndProc; wndClass.hInstance = hInstance; wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndClass.lpszMenuName = NULL; wndClass.lpszClassName = "DX11BookWindowClass"; if(!RegisterClassEx(&wndClass)) // 注册窗口类 return -1; RECT rc = {0, 0, 640, 480}; AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, false); // false表示没有菜单,调整后d窗口大小为640*480 HWND hwnd = CreateWindow("Dx11BookWindowClass", "Blank Win32 Window", // 创建窗口 WS_OVERLAPPEDWINDOW, 0, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); if(!hwnd) return -1; ShowWindow(hwnd, nShow); // 显示窗口 MSG msg = {0}; while(msg.message != WM_QUIT) { if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); else { //Update //Draw } } //dynamic_cast用于指针,const_cast用于常量类型等 return static_cast<int>(msg.wParam); } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hDC; switch(message) { case WM_PAINT: hDC = BeginPaint(hwnd, &ps); EndPaint(hwnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }
程序输出:
相关文章推荐
- Java与C/C++比较——对象引用方面
- PDO 代码
- 关于Myeclipse编译的一个问题的处理
- MAC机中安装RUBY环境
- Eclipse attach source code
- paper 22:kl-divergence(KL散度)实现代码
- c# out ref
- java开发之路书单
- PHP isset 函数作用
- vs+qt+VAssistX搭建
- Java中的24种设计模式与7大原则
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- 《STL源码剖析》之 ROUND_UP()实现原理详解
- Spring 对AOP的实现
- 简单javaXML读取——DOM、SAX
- SpringMVC中url-parden配置的问题和SpringMVC中js、css不生效问题
- c++之动态库和静态库的区别
- 本·拉登的书架:Python文本分析拉登最常念叨什么?
- Delphi存取图像完整解决方案
- Odoo8中“更多”下拉菜单选项指定后台执行代码