生活随笔
收集整理的這篇文章主要介紹了
VC++ 深入详解 学习笔记(5) -- 修改窗口样式续
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
From: http://elton.iteye.com/blog/301503
之前說過, 修改窗口大小,窗口樣式的方法。 這里說明一下修改窗口的圖標,光標和背景的方法。
修改窗口大小,樣式是在創建窗口的時候進行的,而修改圖標,光標和背景是在設計窗口類的時候進行的。 由于MFC封裝了相關操作。 所以我們需要將自己寫的窗口類應用到MFC的框架中。
?
1. 通過窗口類進行修改
在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)方法中添加窗口類,如:
Cpp代碼 ?
WNDCLASS?wndcls;??wndcls.cbClsExtra?=?0;??wndcls.cbWndExtra?=?0;??wndcls.hbrBackground?=?(HBRUSH)GetStockObject(BLACK_BRUSH);??wndcls.hCursor?=?LoadCursor(NULL,?IDC_ARROW);??wndcls.hIcon?=?LoadIcon(NULL,?IDI_APPLICATION);??wndcls.hInstance?=?AfxGetInstanceHandle();??wndcls.lpfnWndProc?=?::DefWindowProc;??wndcls.lpszClassName?=?L"eltonCls";??wndcls.lpszMenuName?=?NULL;??wndcls.style?=?CS_HREDRAW?|?CS_VREDRAW;???
然后再進行注冊
Cpp代碼 ?
RegisterClass(&wndcls);??
?最后在CREATESTRUCT中指定窗口類
Cpp代碼 ?
cs.lpszClass?=?L"eltonCls";??
?由于View是在Frame之上的。 所以上面改的背景色,光標會被view覆蓋在下面。 所以同樣需要修改View的PreCreateWindow函數,在PreCreateWindow中添加:
Cpp代碼 ?
cs.lpszClass?=?L"eltonCls";??
?這樣就可以修改了窗口類的樣式。
?
2. 通過MFC的AfxRegisterWndClass全局函數修改
之前為了修改一下圖標之類的,構造一個窗口類有點太麻煩, MFC為我們提供了一個全局函數AfxRegisterWndClass
Cpp代碼 ?
LPCTSTR?AFXAPI?AfxRegisterWndClass(?????UINT?nClassStyle,?????HCURSOR?hCursor?=?0,?????HBRUSH?hbrBackground?=?0,?????HICON?hIcon?=?0???);???
?這樣,利用這個函數,在CMainFrame::PreCreateWindow中的輸入:
Cpp代碼 ?
cs.lpszClass?=?AfxRegisterWndClass(CS_HREDRAW?|?CS_VREDRAW,?0,?0,?LoadIcon??????????(NULL,IDI_APPLICATION));???
?在View的PreCreateWindow同樣需要輸入:
Cpp代碼 ?
cs.lpszClass?=?AfxRegisterWndClass(CS_HREDRAW?|?CS_VREDRAW,?LoadCursor(NULL,?IDC_CROSS),??????????(HBRUSH)GetStockObject(BLACK_BRUSH),?LoadIcon(NULL,?IDI_APPLICATION));??
?以確保在Frame上面的View也設置了相關背景和光標。
總結
以上是生活随笔為你收集整理的VC++ 深入详解 学习笔记(5) -- 修改窗口样式续的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。