WinCE7使用者通知

來源:互聯網
上載者:User

WinCE7使用者通知    by斜風細雨QQ:253786989    2011-12-26

  設定使用者通知主要是讓系統在某個時間點,彈出一個“通知”給使用者一個提醒。還可以由此執行一個我們預先指定好的app。

  (1) 設定使用者通知

HANDLE CeSetUserNotificationEx(  HANDLE hNotification,   CE_NOTIFICATION_TRIGGER* pcnt,   CE_USER_NOTIFICATION* pceun );

  如果是設定新的使用者通知,hNotification設定為0。如果是修改一個已經註冊過的使用者通知,則用該通知的控制代碼給hNotification參數賦值。第二個參數是CE_NOTIFICATION_TRIGGER類型,主要用來設定通知類型(對於使用者通知有兩種類型:CNT_TIME和CNT_PERIOD),以及某一個類型通知必要參數。第三個參數是系統通知使用者的方式,比如顯示一個通知對話方塊,或者閃爍LED,裝置震動,播放音效檔等等。其中閃爍LED和裝置震動並不是每個WinCE裝置都支援。

  下面用代碼示範一下:

// 填充CE_NOTIFICATION_TRIGGER類型結構體cntCE_NOTIFICATION_TRIGGER cnt;memset(&cnt, 0, sizeof(CE_NOTIFICATION_TRIGGER));cnt.dwSize = sizeof(CE_NOTIFICATION_TRIGGER);cnt.dwType = CNT_PERIOD;cnt.lpszApplication = TEXT("NotificationApp.exe");cnt.lpszArguments = TEXT("This is my user notification string.");SYSTEMTIME st = {0}, ste = {0};GetLocalTime (&st);st.wMinute += 2;if (st.wMinute > 59) {    st.wHour++;    st.wMinute -= 60;}ste = st;ste.wMinute += 2;if (ste.wMinute > 59) {    ste.wHour++;    ste.wMinute -= 60;}cnt.stStartTime = st;cnt.stEndTime = ste;// 填充CE_USER_NOTIFICATION類型結構體cunCE_USER_NOTIFICATION cun;memset (&cun, 0, sizeof (CE_USER_NOTIFICATION));cun.ActionFlags = PUN_DIALOG;cun.pwszDialogTitle = TEXT("對話方塊方式使用者通知");cun.pwszDialogText = TEXT("時間到!");
// 設定使用者通知HANDLE hNotify = CeSetUserNotificationEx(0, &cnt, &cun);TCHAR szText[128] = {0};if (hNotify) {    wsprintf (szText, TEXT("設定使用者通知成功,時間: %d:%02d:%02d"), st.wHour, st.wMinute, st.wSecond);}else{    wsprintf (szText, TEXT("設定使用者通知失敗. rc = %d"), GetLastError());}MessageBox (szText, TEXT("設定使用者通知"), MB_OK | MB_ICONINFORMATION);

  上面的代碼採用彈出對話方塊的方式通知使用者,彈出的“通知”對話方塊的標題是“對話方塊方式使用者通知”,文本是“時間到!”。如果2分鐘使用者還沒有理會“通知”對話方塊,則“通知”對話方塊自動銷毀。如果點擊“通知”對話方塊的Open按鈕,則根目錄下的“NotificationApp.exe”將會被執行。

(2)配置使用者通知

  上面代碼中,是採用固定的通知方式(彈出對話方塊方式)。也可以讓使用者來選擇通知方式(彈出對話方塊,閃爍LED,裝置震動,播放音效檔等等)。

BOOL CeGetUserNotificationPreferences(  HWND hWndParent,   PCE_USER_NOTIFICATION lpNotification ); 

  調用這個函數會彈出一個對話方塊(Notification Options Dialog),可以讓使用者選擇通知方式,如果是播放音效檔,還可以通過一個組合框選擇系統中支援的音效檔。使用者選擇完成之後,點擊“OK”按鈕,則該函數返回TRUE,lpNotification參數將由使用者所做的修改來填充。

  示範代碼:

// 填充CE_USER_NOTIFICATION類型結構體cunTCHAR szSound[MAX_PATH] = TEXT ("alarm1.wav");cun.ActionFlags = PUN_DIALOG;cun.pwszDialogTitle = TEXT("對話方塊方式使用者通知");cun.pwszDialogText = TEXT("時間到!");cun.pwszSound = szSound;cun.nMaxSound = sizeof(szSound);CeGetUserNotificationPreferences (m_hWnd, &cun);

  在調用CeGetUserNotificationPreferences函數之前,填充cun作為(Notification Options Dialog)預設設定。在該函數返回之後,cun結構體已經包含了使用者所作的修改。這時在調用CeSetUserNotificationEx設定通知時,可以將此處的cun作為其第3個參數傳遞即可。

  (3) 清除使用者通知

  在某個由CeSetUserNotificationEx函數設定的通知發生之前,可以調用CeClearUserNotification函數清除該通知.

BOOL CeClearUserNotification(  HANDLE hNotification );

  (4) 響應使用者通知

  在第一段示範代碼中,使用者通知將執行NotificationApp.exe應用程式,在該程式中我們可以通過調用CeHandleAppNotifications函數來響應使用者通知。對於第一段示範代碼來說,在NotificationApp.exe中調用CeHandleAppNotifications函數之後,“通知”對話方塊將銷毀,使用者通知得到響應。

BOOL CeHandleAppNotifications(  TCHAR* pwszAppName );

  示範代碼:

CeHandleAppNotifications(TEXT("NotificationApp.exe"));

  “WinCE7使用者通知”功能主要用到的API函數就是上面幾個,在工作中有這個需要的時候,還是多做一些實驗,多看一下MSDN文檔,才能認識的更深刻些。

WinCE7使用者通知    by斜風細雨QQ:253786989    2011-12-26

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.