初识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 }

浙公网安备 33010602011771号