Win32 API SDK 自绘窗口简单封装类
2016-11-07 02:08
288 查看
实现窗口简单的封装,新手笔记,大牛请多多指教
LoWindow.h 代码
LoWindow.cpp
LoWindow.h 代码
/** * \file LoWindow.h * 自绘窗口的实现类 */ #pragma once class LoWindow { public: LoWindow(void); ~LoWindow(void); private: LoWindow(const LoWindow &OtherWindow); LoWindow &operator=(const LoWindow &OtherWindow); public: /*创建窗口需要的参数 * ParentHwnd 父句柄 * LoWindowClass 窗口的类名 * lWndProc窗口消息函数 */ BOOL Create(HWND lParentHwnd,TCHAR LoWindowClass[],WNDPROC lWndProc); //窗口显示 BOOL Show(); private: /** 消息回调函数 */ static LRESULT CALLBACK lpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); public: WNDPROC m_WndProc;//默认消息回调函数 HWND m_hWnd; //窗口句柄 };
LoWindow.cpp
/** * \file LoWindow.cpp * 自绘窗口的实现类 */ #include "stdafx.h" #include "LoWindow.h" LoWindow::LoWindow(void): m_hWnd(NULL) { } LoWindow::~LoWindow(void) { } BOOL LoWindow::Create(HWND lParentHwnd,TCHAR LoWindowClass[],WNDPROC lWndProc) { HINSTANCE hInst = (HINSTANCE)GetWindowLong(lParentHwnd,GWL_HINSTANCE); if(!LoWindowClass){ MessageBox(lParentHwnd,"类名不能为空","ERROR",MB_ICONERROR); return FALSE; } WNDCLASSEX lowc; memset(&lowc,0,sizeof(WNDCLASSEX)); lowc.hInstance = NULL; lowc.lpszClassName = LoWindowClass; lowc.cbSize = sizeof(WNDCLASSEX); lowc.style = NULL; if(!lWndProc){ lowc.lpfnWndProc = lpWndProc; }else lowc.lpfnWndProc = lWndProc; lowc.cbClsExtra = 0; lowc.cbWndExtra = 0; lowc.hIcon = NULL; lowc.hCursor = LoadCursor(NULL,IDC_ARROW); lowc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); lowc.lpszMenuName = NULL; lowc.hIconSm = NULL; if (!RegisterClassEx(&lowc)){ char szBuffer[128]; sprintf(szBuffer,"error is : %u",GetLastError()); MessageBox(lParentHwnd,szBuffer,"ERROR",MB_ICONERROR); return -1; } m_hWnd = CreateWindow(LoWindowClass, "LW窗口", WS_VISIBLE,0, 0, 100, 100, lParentHwnd, NULL, NULL, NULL); if (!m_hWnd) { char szBuffer[128]; sprintf(szBuffer,"error is : %u",GetLastError()); MessageBox(lParentHwnd,szBuffer,"ERROR",MB_ICONERROR); return FALSE; } SetParent(m_hWnd,lParentHwnd); return TRUE; } BOOL LoWindow::Show(){ ShowWindow(m_hWnd, SW_SHOW); UpdateWindow(m_hWnd); return TRUE; } LRESULT CALLBACK LoWindow::lpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; switch (message) { case WM_CREATE: //MessageBox(NULL,"WM_CREATE","error",0); break; default: return DefWindowProc( hWnd, message, wParam, lParam); } return 0; }
相关文章推荐
- 重温WIN32 API ------ 最简单的Windows窗口封装类
- Win32汇编教程四:编写一个简单的窗口
- 一个简单的Win32 SDK窗口程序
- 1.一个简单Win32窗口程序分析
- 创建一个简单的win32 应用窗口程序
- 【Direct3D9】用D3D9实现一个简单的Galgame #1 创建Win32窗口
- Win32简单的子窗口创建与参数传递
- Win32汇编教程四 编写一个简单的窗口
- 最简单的win32的窗口程序
- Win32汇编教程四 编写一个简单的窗口
- 手动编写最简单win32窗口
- 【win32】最简单的异形窗口实现
- WIN32汇编: 3.创建简单的窗口
- Win32 窗口过程对于WM_KEYDOWN按键操作的简单处理
- Win32汇编教程四 编写一个简单的窗口
- win32 窗口程序实现控制台信息跟踪 简单案例
- win32 api 创建窗口的一个简单例子
- win32汇编窗口程序设计[04]-最简单的消息框
- 一个简单的win32窗口
- win32窗口的创建,GDI简单的绘图操作