关于框架类和视图类的PreCreateWindow函数的重载!!
2009-10-07 13:43
393 查看
框架类:
static LPCSTR classname=NULL;
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
if(classname==NULL)
{
WNDCLASS wndcls;
::GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass,&wndcls);
wndcls.lpszClassName="MyClass1";
wndcls.hIcon=AfxGetApp()->LoadIcon(ID_MYICON);
AfxRegisterClass(&wndcls);
classname="MyClass1";
}
cs.lpszClass="MyClass1";
return TRUE;
视图类:
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.lpszClass=AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ,AfxGetApp()->LoadCursor(IDC_MYCURSOR),
(HBRUSH)GetStockObject(WHITE_BRUSH));
return CView::PreCreateWindow(cs);
一些理解:
AfxRegisterClass函数只有一个WNDCLASS结构的参数,该函数用来注册窗口类。
AfxRegisterWndClass函数有四个参数,第一参数是窗口类型,第二个参数是指针句柄,第三个参数是背景画刷句柄,第四个参数是图标句柄。
从上面的参数可以看出AfxRegisterClass函数需要一个完整的WNDCLASS结构作为参数,因此为了方便一般在使用该函数前用GetClassInfo取得一个已经注册的窗口类(一般是在CFrameWnd::PreCreateWindow(cs)注册的),之后再修改WNDCLASS结构的某些成员(这也是重载PreCreateWindow函数的主要任务,当然为了注册修改后的类,必须将该结构的类名改了)。 最后将类名给cs结构的lpszClass成员。因为后面的窗口创建函数CreateWindowEx会用到。
重载视图类的PreCreateWinodw函数会发现,CView::PreCreateWindow(cs)是在最后调用的,因此没有完整的已经注册的窗口类可用,因此用AfxRegisterWndClass函数修改相关参数。
static LPCSTR classname=NULL;
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
if(classname==NULL)
{
WNDCLASS wndcls;
::GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass,&wndcls);
wndcls.lpszClassName="MyClass1";
wndcls.hIcon=AfxGetApp()->LoadIcon(ID_MYICON);
AfxRegisterClass(&wndcls);
classname="MyClass1";
}
cs.lpszClass="MyClass1";
return TRUE;
视图类:
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.lpszClass=AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ,AfxGetApp()->LoadCursor(IDC_MYCURSOR),
(HBRUSH)GetStockObject(WHITE_BRUSH));
return CView::PreCreateWindow(cs);
一些理解:
AfxRegisterClass函数只有一个WNDCLASS结构的参数,该函数用来注册窗口类。
AfxRegisterWndClass函数有四个参数,第一参数是窗口类型,第二个参数是指针句柄,第三个参数是背景画刷句柄,第四个参数是图标句柄。
从上面的参数可以看出AfxRegisterClass函数需要一个完整的WNDCLASS结构作为参数,因此为了方便一般在使用该函数前用GetClassInfo取得一个已经注册的窗口类(一般是在CFrameWnd::PreCreateWindow(cs)注册的),之后再修改WNDCLASS结构的某些成员(这也是重载PreCreateWindow函数的主要任务,当然为了注册修改后的类,必须将该结构的类名改了)。 最后将类名给cs结构的lpszClass成员。因为后面的窗口创建函数CreateWindowEx会用到。
重载视图类的PreCreateWinodw函数会发现,CView::PreCreateWindow(cs)是在最后调用的,因此没有完整的已经注册的窗口类可用,因此用AfxRegisterWndClass函数修改相关参数。
相关文章推荐
- OnCreate()和PreCreateWindow()函数的区别
- CMainFrame::PreCreateWindow函数中WS_CLIPCHILDREN属性的修改需要慎重!
- PreCreateWindow函数, PreSubClassWindow函数
- 重载CDialog::PreCreateWindow是无效的
- 关于CFormView类视图的Create()函数的一个错误
- MFC函数—— CWnd::PreCreateWindow
- 关于powerbuilder的全局函数重载问题
- 关于在文档类,视图类,框架类,应用程序类,自定义类中获取其它四个类的方法
- OnCreate PreCreateWindow PreSubclassWindow
- PreCreateWindow作用
- PreCreateWindow、PreSubclassWindow、SubclassWindow
- 关于as3中如何实现函数的重载
- PreCreateWindow
- CFrameWnd::ActivateFrame()和PreCreateWindow()
- windows编程中关于设置映象模式的四个函数SetWindowOrg SetViewPortOrg SetMapMode SetWindowExtEx SetViewPortExtEx
- CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow的区别
- OnCreate PreCreateWindow PreSubclassWindow !
- CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow的区别
- PreCreateWindow改窗口类型无效原因
- Bitmap.createBitmap函数有6个重载方法