淺析Visual C++開發(fā)實現(xiàn)方法
其實Visual C++不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境,對于Visual C++這些組件通過一個很重要的組件集成為一個良好的開發(fā)環(huán)境,還有一些對Visual C++開發(fā)實現(xiàn)方法介紹。
這些程序運行時不顯示運行窗口,只在任務(wù)欄上顯示一個圖標,表示程序正在運行,用戶可以通過鼠標與應(yīng)用程序交互,程序開發(fā)人員有時也需要編制一些僅在后臺運行的類似程序,為了不干擾前臺程序的運行界面和不顯示不必要的窗口,應(yīng)使程序運行時的主窗口不可見。
同時將一個圖標顯示在任務(wù)欄右端靜態(tài)通告區(qū)中并響應(yīng)用戶的鼠標動作。本實例就介紹Visual C++開發(fā)這類程序的設(shè)計方法,該程序編譯運行后,如果雙擊托盤圖標,程序會彈出一個消息列表窗口,只要鼠標在托盤圖標上移動或點擊(無論是左右鍵的單擊或雙擊),產(chǎn)生的消息都會顯示在這個窗口。#t#
當鼠標光標移到托盤圖標上時,在圖標附近會顯示提示信息;單擊右鍵時彈出上下文菜單,這個菜單中應(yīng)包含打開屬性頁的命令或者打開與圖標相關(guān)的其它窗口的命令,另外,該程序還可以動態(tài)的改變托盤的圖標。參照這個例子,相信讀者能輕松自如地在自己的程序中應(yīng)用系統(tǒng)托盤。
Visual C++開發(fā)實現(xiàn)方法
為了實現(xiàn)拖盤程序,首先要使程序的主窗口不可見,這點實現(xiàn)起來十分容易,只要調(diào)用ShowWindow(SW_HIDE)就可以了,本實例采用的就是這種方法,還有一種思路是通過分別設(shè)置主邊框窗口的風格和擴展風格來隱藏主框架:
在任務(wù)條上顯示圖標是利用系統(tǒng)API函數(shù)Shell_NotifyIcon()來將一個圖標顯示在任務(wù)欄的通告區(qū)中。該函數(shù)的原型為:BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid); 該函數(shù)的第一個參數(shù)dwMessage類型為DWORD,表示要進行的動作,它可以是下面的值之一:
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- cs.style =WS_POPUP;//使主窗口不可見;
- cs.dwExStyle =WS_EX_TOOLWINDOW;//不顯示任務(wù)按鈕;
- return CFrameWnd::PreCreateWindow(cs);
- }
NIM_ADD:添加一個圖標到任務(wù)欄。NIM_MODIFY:修改狀態(tài)欄區(qū)域的圖標。NIM_DELETE:刪除狀態(tài)欄區(qū)域的圖標。IM_SETFOCUS:將焦點返回到任務(wù)欄通知區(qū)域。當完成用戶界面操作時,任務(wù)欄圖標必須用此消息。例如,如果任務(wù)欄圖標正顯示上下文菜單,但用戶按下"ESCAPE"鍵取消操作,這時就必須用此消息將焦點返回到任務(wù)欄通知區(qū)域。
NIM_SETVERSION:指示任務(wù)欄按照相應(yīng)的動態(tài)庫版本工作。第二個參數(shù)pnid是NOTIFYICONDATA結(jié)構(gòu)的地址,其內(nèi)容視dwMessage的值而定。這個結(jié)構(gòu)在SHELLAPI.H文件中定義如下:
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- cs.style =WS_POPUP;//使主窗口不可見;
- cs.dwExStyle =WS_EX_TOOLWINDOW;//不顯示任務(wù)按鈕;
- return CFrameWnd::PreCreateWindow(cs);
- }