桌面右下角, 有一排雜七雜八的小程式,

該怎樣讓我們寫好的程式, 放在工作列呢?

 

這是本週要在會議上要跟大家分享的小程式...

這次很迅速的就完成了 (果然有認真有差~~~)

呼~~~~~~~

 

 

我是用自己寫的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, 就會變醬啦:

Shell_NotifyIcon

完成!!!!!!!!!!!!!!!!!!!!!

 

接著投影片做一做,

星期四跟大夥們報告,

搞定!!! 收工!!!!!!!!!!!!!!!!

 

 

一開始還覺得有點複雜,

其實也還好嘛~(ci)

 

 

果然有心就可以完成任何事!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

現在熱血好沸騰啊!!!!!!!!!!!

 

那....回家來玩Wii吧~~

 

 

好了~本週經驗值又增加了

code cola 下星期停刊

因為新年來了....這是社會人士唯一的寒假~(泣~~~~~~~~~~)

arrow
arrow
    全站熱搜

    dearsoul 發表在 痞客邦 留言(0) 人氣()