初识MFC:对窗口外观的修改(背景、鼠标等)(PreCreateWindow中)

  vs2012中,新建MFC项目(单文档、标准MFC),工程名:fun。

 1.对背景及光标的修改:

  由于背景及光标的显示属于窗口视图中的功能,所以需要在CView的派生类中修改。我们通过CfunView::PreCreateWindow修改,方法如下。

 1 //funsView.cpp
 2 BOOL CfunsView::PreCreateWindow(CREATESTRUCT& cs)
 3 {
 4     // TODO: 在此处通过修改
 5     //  CREATESTRUCT cs 来修改窗口类或样式
 6 
 7     HBRUSH hBrush = CreateSolidBrush(RGB( 0 , 0 , 255 ) );    //加载背景句柄,此处为蓝色RGB
 8     cs.lpszClass = AfxRegisterWndClass(NULL , AfxGetApp()->LoadCursorW(IDC_CURSOR1) , hBrush , NULL );
 9 
10     return CView::PreCreateWindow(cs);
11 }

 

 2.在框架中,对窗口名、Icon等进行修改:

 1 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
 2 {
 3     if( !CFrameWnd::PreCreateWindow(cs) )
 4         return FALSE;
 5     // TODO: 在此处通过修改
 6     //  CREATESTRUCT cs 来修改窗口类或样式
 7 
 8 //方法一:通过函数参数cs修改
 9     //  修改窗口的大小
10     //cs.cx = 1000;
11     //cs.cy = 200;
12     //int X = GetSystemMetrics(SM_CXSCREEN);
13     //int Y = GetSystemMetrics(SM_CYSCREEN);
14 
15     ////  修改出现的位置
16     //cs.x = (X-cs.cx)/2;
17     //cs.y = (Y-cs.cy)/2;
18     //
19     //cs.style = WS_OVERLAPPEDWINDOW;
20     ////  去掉 FWS_ADDTOTITLE;
21 
22     //cs.style &= ~FWS_ADDTOTITLE; //使cs.lpszName(窗口名字可修改)
23     //cs.style &= ~WS_MINIMIZEBOX;
24     //cs.style &= ~WS_MAXIMIZEBOX;
25     //cs.style &= ~WS_THICKFRAME;   //  不允许 拖动
26 
27     //cs.style = NULL;
28 
29     //cs.style = WS_POPUP;
30     ////  修改标题
31     //cs.lpszName = _T("哈哈");
32     
33 
34 
35 //方法二:通过创建新的WNDCLASSEX对象,再次注册修改 (再次大小Icon均可修改)
36     //WNDCLASSEX wndclass;
37     //wndclass.cbClsExtra = 0;
38     //wndclass.cbSize = sizeof(wndclass);
39     //wndclass.cbWndExtra = 0;
40     //wndclass.hbrBackground = NULL;
41     //wndclass.hCursor = NULL;
42     //wndclass.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);  //  加载图标
43     //wndclass.hIconSm = AfxGetApp()->LoadIcon(IDI_ICON2);
44     //wndclass.hInstance = AfxGetInstanceHandle();   //  得到 实例的句柄
45     //wndclass.lpfnWndProc = AfxWndProc;
46     //wndclass.lpszMenuName = NULL;
47     //wndclass.lpszClassName = _T("AAAAA");
48     //wndclass.style = CS_VREDRAW|CS_HREDRAW;
49     //::RegisterClassEx(&wndclass);        //此处必须注册
50 
51     
52 //方法三:通过MFC提供的注册函数修改,不过此方法只能修改函数参数对应的属性
53     //  用  AfxRegisterWndClass  注册的结构体
54     cs.lpszClass = AfxRegisterWndClass(CS_VREDRAW|CS_HREDRAW,0,0,AfxGetApp()->LoadIcon(IDI_ICON1));
55 
56     return TRUE;
57 }

 

posted @ 2015-04-26 16:06  netosoul  阅读(898)  评论(0)    收藏  举报