桌面右下角, 有一排雜七雜八的小程式,
該怎樣讓我們寫好的程式, 放在工作列呢?
這是本週要在會議上要跟大家分享的小程式...
這次很迅速的就完成了 (果然有認真有差~~~)
呼~~~~~~~
我是用自己寫的Snapshot程式改的 (也就是PrintScreen小程式)
Step1...先用個變數來定義dlg吧
(記得 include dlg.h...剛剛沒有include 結果錯好多~哼)
class CSnapshotApp : public CWinAppEx
{
private:
CSnapshotDlg* m_pApplicationDialog;
}
BOOL CSnapshotApp::InitInstance()
{
// ....mfc default def code...
m_pApplicationDialog = new CSnapshotDlg();
m_pApplicationDialog->Create(IDD_SNAPSHOT_DIALOG,NULL);
m_pMainWnd = m_pApplicationDialog;
ShowWindow(m_pMainWnd->GetSafeHwnd(),SW_HIDE);
return TRUE;
}
Step 2... 定義收到滑鼠訊息的Message, 要出現的提示小方框的資源ID
#define WM_TRAY_ICON_NOTIFY_MESSAGE WM_USER+1024
#define MENUID_EXIT 103
protected:
LRESULT OnTrayNotify(WPARAM wParam,LPARAM lParam);
BEGIN_MESSAGE_MAP(CSnapshotDlg, CDialog)
ON_MESSAGE(WM_TRAY_ICON_NOTIFY_MESSAGE,OnTrayNotify)
END_MESSAGE_MAP()
Step 3... 在InitDlg的時候, 定義右下角小程式的icon, 要呼叫的callback, handle window...
本程式的重點就在於 Shell_NotifyIcon
BOOL CSnapshotDlg::OnInitDialog()
{
NOTIFYICONDATA niData;
niData.cbSize = sizeof(NOTIFYICONDATA);
niData.hWnd = m_hWnd;
niData.uID = 1;
niData.uCallbackMessage = WM_TRAY_ICON_NOTIFY_MESSAGE;
niData.hIcon = m_hIcon;
niData.uFlags = NIF_MESSAGE | NIF_ICON;// | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&niData);
}
Step 4... 我們會一直不斷的來到OnTrayNotify, 直到收到"滑鼠右鍵"的event後,
就開始create menu啦, 做些我們想要的功能, 或是呼叫其他功能...
LRESULT CSnapshotDlg::OnTrayNotify(WPARAM wParam,LPARAM lParam)
{
// 收到訊息後, 我們會得到一參數
UINT uMsg = (UINT) lParam;
// 這個收到的參數呢, 如果是WM_RBUTTONDOWN (使用者點擊滑鼠右鍵) 我們就進入這個 if 圈圈吧
if(WM_RBUTTONDOWN == uMsg || WM_CONTEXTMENU == uMsg)
{
// 雖然沒查, 但大概知道就是得到目前滑鼠游標的position(位置)
CPoint pt;
GetCursorPos(&pt);
// 製作一個Menu吧
HMENU hContextMenu = CreatePopupMenu();
// 在這麼Menu裡, 增加一個"鴨呼~成功了"的 "Append Menu"
::AppendMenu(hContextMenu,MF_STRING, MENUID_EXIT,_T("壓呼~成功了!"));
// 接著把做好的Menu放出來吧!!!!!!!!!!!!!!! (放大絕~~~~~~~~~~~~~~~)
// MSDN的定義是:
// Displays a shortcut menu at the specified location and tracks the selection of items on the menu.
// The shortcut menu can appear anywhere on the screen.
BOOL iSelectedIndex = TrackPopupMenu(hContextMenu,
TPM_LEFTALIGN | TPM_HORPOSANIMATION | TPM_RETURNCMD | TPM_LEFTBUTTON,
pt.x,pt.y,0,m_hWnd,NULL);
}
return 0;
}
程式寫完後, build and run, 就會變醬啦:
完成!!!!!!!!!!!!!!!!!!!!!
接著投影片做一做,
星期四跟大夥們報告,
搞定!!! 收工!!!!!!!!!!!!!!!!
一開始還覺得有點複雜,
其實也還好嘛~(ci)
果然有心就可以完成任何事!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
現在熱血好沸騰啊!!!!!!!!!!!
那....回家來玩Wii吧~~
好了~本週經驗值又增加了
code cola 下星期停刊
因為新年來了....這是社會人士唯一的寒假~(泣~~~~~~~~~~)