Win32 API SDK 自绘窗口简单封装类

实现窗口简单的封装,新手笔记,大牛请多多指教


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;
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值