【VC++学习笔记三】控件自绘

      MFC应用程序中,大部分的控件类型都已经被定制好了,即便是修改,也只是小范围内的修改,而很多情况下,我们又需要对界面进行特殊定制,这时,最好的办法就是用CWnd类进行派生,自己生成新的窗体,在WM_PAINT消息中,进行控件的自绘,创建时,也只需要在主窗体的创建语句中加上就能显示了,下面是一个简单的控件创建过程:

如果什么都不处理的话,需要重载注册窗口类,才能显示,父窗口的WM_SIZE函数需要重载以相应对窗口变化的处理。

 

BOOL CCustomerWnd::PreCreateWindow(CREATESTRUCT& cs)

{

HINSTANCE hInstance = (HINSTANCE)AfxGetInstanceHandle();

ASSERT(hInstance);

 

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

 

BOOL bRet = GetClassInfoEx(hInstance,cs.lpszClass,&wcex);

if (bRet)

{

return TRUE;

}

 

wcex.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS;

wcex.lpfnWndProc = AfxWndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = wcex.hIconSm = (HICON)::LoadIcon(hInstance,MAKEINTRESOURCE(IDR_MAINFRAME));

wcex.hCursor = (HCURSOR)::LoadCursor(NULL,IDC_ARROW);

wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = cs.lpszClass;

 

bRet = RegisterClassEx(&wcex);

 

return bRet;

}

原文地址:https://www.cnblogs.com/OldGlory/p/3588643.html