BOOL CQQHideWndDlg::SetWindowPos(const CWnd* pWndInsertAfter,
LPCRECT pCRect, UINT nFlags)
{
return CDialog::SetWindowPos(pWndInsertAfter,pCRect->left, pCRect->top,
pCRect->right - pCRect->left, pCRect->bottom - pCRect->top, nFlags);
}
到此,程序終于完成了。在我的源代碼中還有對WM_SIZING的處理和定義了與之相關的宏,這些主要是控制窗口在調整大小時不能超過最小的寬度和高度,與QQ的自動伸縮無關,所以不在這里提及了。
三、結束語
雖然還不能算是完美的模仿,但效果已經非常非常的接近了。也許有人會奇怪為什么要用Tool Window風格,這是因為,這樣在任務欄中不會顯示窗口。從QQ的標題欄高度也可以判斷出他也是這種風格,但這樣一來就不能擁有最小化、最大化按鍵了。實際上QQ的最大化、最小化和關閉按鍵都是用DC畫上去的。如何在Caption上增加按鍵,外國一些開源網站有源代碼,我下載并看了一下,發現里面有個知識點很有趣,那就是更改消息路由,有興趣的可以去下載來學習一下。
QQ的成功很大部分在于他的界面比較人性化(用了MSN后深有感受),而這些界面實現起來原理也許很簡單,難的是觀察東西心要細、設計東西心要密、開發東西心要異。
文章來源于領測軟件測試網 http://www.kjueaiud.com/