Windows CE Notification API的使用方法
生活随笔
收集整理的這篇文章主要介紹了
Windows CE Notification API的使用方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 引言
???? 以Windows CE 為操作系統(tǒng)的掌上電腦(如PocketPC或HPC),除具備PC的功能外,還具備很強的自身控制能力。Windows CE API超越微軟其他操作系統(tǒng)的 API的一個方面是他提供了一個強有力的通知接口(NotificationAPI),該接口允許應(yīng)用程式自己安排自己在某個確定的時間運行,或在某個系統(tǒng)事件發(fā)生時運行,這使得我們能夠應(yīng)用他來設(shè)計研發(fā)各種高級控制程式,比如按時間或預(yù)訂的事件來自動開啟/關(guān)閉電腦,或按時間或預(yù)訂的事件來自動開啟/關(guān)閉一個或多個應(yīng)用程式,乃至控制一個或多個應(yīng)用程式的運行流程。
2 通知API的解析
??? 所謂通知是操作系統(tǒng)對發(fā)生的某個事件所發(fā)出的響應(yīng)信號。Windows CE對定時器事件發(fā)出的響應(yīng)信號即“定時器事件通知”,而對系統(tǒng)事件發(fā)出的響應(yīng)信號即“系統(tǒng)事件通知”。定時器事件表明已到達指定時間,系統(tǒng)事件表明發(fā)生了系統(tǒng)級事件,如添加或刪除了某設(shè)備,系統(tǒng)時間更改了,和其他設(shè)備發(fā)生同步,檢測到RS232口連接等。假如我們要在給定的時間直接運行某個應(yīng)用程式(不用用戶干涉),就能夠簡單地使用“定時器事件通知”,而當(dāng)我們需要監(jiān)控一些系統(tǒng)事件的發(fā)生時,就要使用″系統(tǒng)事件通知″。特別需要強調(diào)的是:除非不安裝電池或處于死機狀態(tài),否則掌上電腦的電源始終不關(guān)閉;當(dāng)用戶按下關(guān)閉電源按鈕或不使用時,機器也只是處于休眠狀態(tài)而并沒有真正切斷電源(在休眠狀態(tài)下,他僅提供能保持其時鐘、應(yīng)用程式及RAM中存儲的數(shù)據(jù)所需的最少能量)。因此,對于注冊使用“定時器事件通知”或″系統(tǒng)事件通知″的程式,即使系統(tǒng)是關(guān)閉的,當(dāng)定時器事件到達時或發(fā)生系統(tǒng)事件時,要運行的應(yīng)用程式也會啟動。
上述的“定時器事件通知”的使用雖然方便,但有時不能滿足用戶的需要。比如對于復(fù)雜的控制流程,不但到了指定時間要運行應(yīng)用程式,而且要根據(jù)用戶的不同反應(yīng)進行不同的控制。因此,Windows CE還提供了第三種通知接口: ″用戶通知″。″用戶通知″也使用定時器事件,但和“定時器事件通知”不同,“用戶通知”發(fā)生時必須被用戶確認(rèn),從而到了“用戶通知”指定的時間可根據(jù)用戶的不同反應(yīng)進行不同的流程控制。比如,當(dāng)用戶僅需在指定的時間作一下提示,則使用“用戶通知”的應(yīng)用程式可設(shè)計為以四種方式(閃動LED,振動設(shè)備,播放聲音和顯示提示框)提示用戶,而且用戶可隨時更改提示方式。又比如,當(dāng)用戶需要不但在指定的時間作一下提示,還要在用戶做出確認(rèn)后才使程式繼續(xù)運行,這就只能使用“用戶通知”而不能使用“定時器事件通知”。
當(dāng)我們把自己研發(fā)的程式注冊到特定的事件通知后,操作系統(tǒng)將在該事件發(fā)生時生成一個通知。系統(tǒng)使用通知和用戶和其他程式通信。Windows CE共提供了六個通知接口:
CeSetUserNotification
CeGetUserNotificationPreferences
CeClearUserNotification
CeHandleAppNotifications
CeRunAppAtTime和CeRunAppAtEvent
前四個為″用戶通知″所使用,后兩個分別為“定時器事件通知”和″系統(tǒng)事件通知″所使用。下面分別介紹這六個API的使用方法:
(1)函數(shù)CeSetUserNotification用于注冊用戶通知,其原型是:
HANDLE CeSetUserNotification(
HANDLE hNotification,?
TCHAR* pwszAppName,?
SYSTEMTIME* lpTime,?
PCE_USER_NOTIFICATION lpUserNotification?
);
其參數(shù)含義是:句柄hNotification配置為0表示創(chuàng)建一個新的通知,而要更改已注冊的通知則配置hNotification為希望更改的用戶通知的句柄(這個句柄是由注冊用戶通知的程式在調(diào)用CeSetUserNotification后的返回值);pwszAppName是該應(yīng)用程式的名稱,當(dāng)通知發(fā)生時,該應(yīng)用程式的小圖標(biāo)將在任務(wù)欄上顯示;lpTime是個指向SYSTEMTIME結(jié)構(gòu)指針,該結(jié)構(gòu)指定了通知發(fā)生的時間;lpUserNotification也是個結(jié)構(gòu)指針,他指向PCE_USER_NOTIFICATION結(jié)構(gòu), Windows CE用該結(jié)構(gòu)描述用戶怎樣被通知,這個結(jié)構(gòu)的定義是:
typedef struct UserNotificationType {
DWORD ActionFlags;
TCHAR* pwszDialogTitle;
TCHAR* pwszDialogText;
TCHAR* pwszSound;
DWORD nMaxSound;
DWORD dwReserved;
} CE_USER_NOTIFICATION, *PCE_USER_NOTIFICATION;
其中變量ActionFlags是一組定義了在到達指定的時間時以何種形式提示用戶的標(biāo)志:PUN_LED(閃動屏幕),PUN_VIBRATE(振動設(shè)備),PUN_DIALOG(顯示對話框),PUN_SOUND(播放聲音文檔)和PUN_REPEAT(重復(fù)聲音文檔10到15秒),他能夠是上述標(biāo)志的任意組合。從程式調(diào)用CeSetUserNotification開始到用戶得到通知的這一時間段中,通知一直處于活動狀態(tài)。如要在他超時之前修改此通知,程式可通過再次調(diào)用CeSetUserNotification來實現(xiàn)
(2)調(diào)用CeGetUserNotificationPreferences,函數(shù)原型為:
BOOL CeGetUserNotificationPreferences(
HWND hWndParent,?
PCE_USER_NOTIFICATION lpNotification?
);
這個函數(shù)可配置用戶通知,以便讓用戶能有修改提示方式的機會,其中hWndParent是提示框父窗口的窗口句柄。
(3)調(diào)用CeClearUserNotification能夠?qū)崿F(xiàn)在用戶通知到達之前清除他。
(4)調(diào)用CeHandleAppNotifications 函數(shù)以確認(rèn)用戶通知。用戶通知到達后需要確認(rèn)。對于顯示提示框的通知,確認(rèn)的方式是點擊提示框的確定按鈕或按下設(shè)備外殼上的通知按鈕(此時用戶通知僅起到提示的作用,不啟動應(yīng)用程式);對于不顯示提示框的通知,系統(tǒng)將在任務(wù)欄上顯示注冊該通知的程式的圖標(biāo),當(dāng)用戶點擊此圖標(biāo)時系統(tǒng)將啟動相應(yīng)的應(yīng)用程式的一個實例(系統(tǒng)還傳遞一個命令行參數(shù)lpCmdLine以表明為什么應(yīng)用程式會運行,該參數(shù)是串 APP_RUN_TO_HANDLE_NOTIFICATION加空格加通知的句柄)。對于不顯示提示框的用戶通知,在應(yīng)用程式中要調(diào)用 CeHandleAppNotifications 函數(shù)來確認(rèn)通知,該函數(shù)將任何用于應(yīng)用程式的活動通知都標(biāo)記為已處理,并刪除任務(wù)欄上的圖標(biāo)。在實際編碼時還要考慮是否有該應(yīng)用程式的另一個實例在運行,如有,則應(yīng)向他發(fā)送一個自定義消息由該實例處理此通知并終止自身以節(jié)省資源。
(5)調(diào)用CeRunAppAtTime生成“定時器事件通知”,函數(shù)原型為:
BOOL CeRunAppAtTime(
TCHAR* pwszAppName,?
SYSTEMTIME* lpTime?
);
其參數(shù)含義是:lpTime是個結(jié)構(gòu)指針,該結(jié)構(gòu)指定了運行應(yīng)用程式的時間;pwszAppName是要運行的應(yīng)用程式的名稱。由于只是在給定的時間自動運行某個應(yīng)用程式,因此比較簡單。要修改“定時器事件通知”,只要再次調(diào)用CeRunAppAtTime。因為后一次調(diào)用CeRunAppAtTime將替換前一次的通知。要清除“定時器事件通知”,只要在調(diào)用CeRunAppAtTime時,在參數(shù)lpTime中傳遞一個NULL指針。
(6)調(diào)用CeRunAppAtEvent生成″系統(tǒng)事件通知″,函數(shù)原型:
BOOL CeRunAppAtEvent(
TCHAR* pwszAppName,?
LONG lWhichEvent?
);
其參數(shù)含義是:pwszAppName是要運行的應(yīng)用程式的名稱;lWhichEvent 是指出要監(jiān)控哪一個事件,標(biāo)志常量如下:
NOTIFICATION_EVENT_NONE 清除事件通知
NOTIFICATION_EVENT_SYNC_END 同步完成通知
NOTIFICATION_EVENT_DEVICE_CHANGE 添加或刪除設(shè)備通知?
NOTIFICATION_EVENT_RS232_DETECTED 檢測到RS232連接通知
NOTIFICATION_EVENT_TIME_CHANGE 系統(tǒng)時間更改通知
NOTIFICATION_EVENT_RESTORE_END 設(shè)備恢復(fù)完成通知
要停止響應(yīng)系統(tǒng)事件通知,應(yīng)用程式只要再次調(diào)用CeRunAppAtEvent,并在lWhichEvent參數(shù)中傳遞其名稱和NOTIFICATION_EVENT_NONE。
3 通知API的使用代碼實例
#include?
CE_USER_NOTIFICATION g_ceun;?
(1) 對CE_USER_NOTIFICATION結(jié)構(gòu)初始化的代碼片段. memset (&g_ceun, sizeof(g_ceun));
g_ceun.ActionFlags = PUN_DIALOG;?
g_ceun.pwszDialogTitle = szDlgTitle;?
g_ceun.pwszDialogText = szDlgText;?
g_ceun.pwszSound = szSound;?
g_ceun.nMaxSound = sizeof(szSound);?
(2)注冊用戶通知的代碼片段:
SYSTEMTIME st; GetLocalTime (&st);
GetModuleFileName (hInst, szExeName,sizeof(szExeName));
hNotify = CeSetUserNotification (0, szExeName,&st, &g_ceun);?
(3)配置用戶通知的代碼段:
CeGetUserNotificationPreferences(hWnd, &g_ceun);?
(4)使用CeHandleAppNotifications并只運行一個實例(為節(jié)省資源)的代碼段 :
//判斷應(yīng)用程式的啟動是否源于用戶通知
If (lstrcmp(szText,APP_RUN_TO_HANDEL_NOTIFICATION==0)
GetModuleFileName (hInst, szText, sizeof(szText));
CeHandleAppNotifications (szText);?
hNotify =(HANDLE)_wtol(pPtr); //取通知的句柄
//檢查是否已有應(yīng)用程式的實例在運行
hWnd = FindWindow(NULL, szAppName);
if(hWnd)//如有,向他發(fā)送一個自定義消息,由他處理此用戶通知
SendMessage(hWnd, MYMSG_TELLNOTIFY, 0, (LPARM)hNotify);
//終止自身, 代碼略去
(5)使用“定時器事件通知”的代碼段:?
SYSTEMTIME st; GetLocalTime (&st);
GetModuleFileName (hInst, szExeName, sizeof(szExeName));
CeRunAppAtTime (szExeName, &st);
(6)使用“系統(tǒng)事件通知”的代碼段:
LONG lEvent;?
if (IsDlgButtonChecked(hWnd, IDC_SYNC_END) ==1)
lEvent != NOTIFICATION_EVENT_SYNC_END;
if (IsDlgButtonChecked(hWnd, IDC_SERIAL_DETECT)==1)?
lEvent !=NOTIFICATION_EVENT_RS232_DETECTED;?
if (IsDlgButtonChecked(hWnd, IDC_DEVICE_CHANGE)== 1)
lEvent != NOTIFICATION_EVENT_DEVICE_CHANGE;
if (IsDlgButtonChecked(hWnd, IDC_TIME_CHANGE)==1)
lEvent != NOTIFACTION_EVENT_TIME_CHANGE;?
if (IsDlgButtionChecked(hWnd, IDC_RESTORE_END) ==1)
lEvent != NOTIFICATION_EVENT_RESTORE_END;
GetModuleFileName (hInst, szExeName, sizeof(szExeName);?
CeRunAPpAtEvent(szExeName, lEvent);?
以上我們介紹了Windows CE Notification API的使用方法,關(guān)于Windows CE應(yīng)用程式研發(fā)環(huán)境的使用。
???? 以Windows CE 為操作系統(tǒng)的掌上電腦(如PocketPC或HPC),除具備PC的功能外,還具備很強的自身控制能力。Windows CE API超越微軟其他操作系統(tǒng)的 API的一個方面是他提供了一個強有力的通知接口(NotificationAPI),該接口允許應(yīng)用程式自己安排自己在某個確定的時間運行,或在某個系統(tǒng)事件發(fā)生時運行,這使得我們能夠應(yīng)用他來設(shè)計研發(fā)各種高級控制程式,比如按時間或預(yù)訂的事件來自動開啟/關(guān)閉電腦,或按時間或預(yù)訂的事件來自動開啟/關(guān)閉一個或多個應(yīng)用程式,乃至控制一個或多個應(yīng)用程式的運行流程。
2 通知API的解析
??? 所謂通知是操作系統(tǒng)對發(fā)生的某個事件所發(fā)出的響應(yīng)信號。Windows CE對定時器事件發(fā)出的響應(yīng)信號即“定時器事件通知”,而對系統(tǒng)事件發(fā)出的響應(yīng)信號即“系統(tǒng)事件通知”。定時器事件表明已到達指定時間,系統(tǒng)事件表明發(fā)生了系統(tǒng)級事件,如添加或刪除了某設(shè)備,系統(tǒng)時間更改了,和其他設(shè)備發(fā)生同步,檢測到RS232口連接等。假如我們要在給定的時間直接運行某個應(yīng)用程式(不用用戶干涉),就能夠簡單地使用“定時器事件通知”,而當(dāng)我們需要監(jiān)控一些系統(tǒng)事件的發(fā)生時,就要使用″系統(tǒng)事件通知″。特別需要強調(diào)的是:除非不安裝電池或處于死機狀態(tài),否則掌上電腦的電源始終不關(guān)閉;當(dāng)用戶按下關(guān)閉電源按鈕或不使用時,機器也只是處于休眠狀態(tài)而并沒有真正切斷電源(在休眠狀態(tài)下,他僅提供能保持其時鐘、應(yīng)用程式及RAM中存儲的數(shù)據(jù)所需的最少能量)。因此,對于注冊使用“定時器事件通知”或″系統(tǒng)事件通知″的程式,即使系統(tǒng)是關(guān)閉的,當(dāng)定時器事件到達時或發(fā)生系統(tǒng)事件時,要運行的應(yīng)用程式也會啟動。
上述的“定時器事件通知”的使用雖然方便,但有時不能滿足用戶的需要。比如對于復(fù)雜的控制流程,不但到了指定時間要運行應(yīng)用程式,而且要根據(jù)用戶的不同反應(yīng)進行不同的控制。因此,Windows CE還提供了第三種通知接口: ″用戶通知″。″用戶通知″也使用定時器事件,但和“定時器事件通知”不同,“用戶通知”發(fā)生時必須被用戶確認(rèn),從而到了“用戶通知”指定的時間可根據(jù)用戶的不同反應(yīng)進行不同的流程控制。比如,當(dāng)用戶僅需在指定的時間作一下提示,則使用“用戶通知”的應(yīng)用程式可設(shè)計為以四種方式(閃動LED,振動設(shè)備,播放聲音和顯示提示框)提示用戶,而且用戶可隨時更改提示方式。又比如,當(dāng)用戶需要不但在指定的時間作一下提示,還要在用戶做出確認(rèn)后才使程式繼續(xù)運行,這就只能使用“用戶通知”而不能使用“定時器事件通知”。
當(dāng)我們把自己研發(fā)的程式注冊到特定的事件通知后,操作系統(tǒng)將在該事件發(fā)生時生成一個通知。系統(tǒng)使用通知和用戶和其他程式通信。Windows CE共提供了六個通知接口:
CeSetUserNotification
CeGetUserNotificationPreferences
CeClearUserNotification
CeHandleAppNotifications
CeRunAppAtTime和CeRunAppAtEvent
前四個為″用戶通知″所使用,后兩個分別為“定時器事件通知”和″系統(tǒng)事件通知″所使用。下面分別介紹這六個API的使用方法:
(1)函數(shù)CeSetUserNotification用于注冊用戶通知,其原型是:
HANDLE CeSetUserNotification(
HANDLE hNotification,?
TCHAR* pwszAppName,?
SYSTEMTIME* lpTime,?
PCE_USER_NOTIFICATION lpUserNotification?
);
其參數(shù)含義是:句柄hNotification配置為0表示創(chuàng)建一個新的通知,而要更改已注冊的通知則配置hNotification為希望更改的用戶通知的句柄(這個句柄是由注冊用戶通知的程式在調(diào)用CeSetUserNotification后的返回值);pwszAppName是該應(yīng)用程式的名稱,當(dāng)通知發(fā)生時,該應(yīng)用程式的小圖標(biāo)將在任務(wù)欄上顯示;lpTime是個指向SYSTEMTIME結(jié)構(gòu)指針,該結(jié)構(gòu)指定了通知發(fā)生的時間;lpUserNotification也是個結(jié)構(gòu)指針,他指向PCE_USER_NOTIFICATION結(jié)構(gòu), Windows CE用該結(jié)構(gòu)描述用戶怎樣被通知,這個結(jié)構(gòu)的定義是:
typedef struct UserNotificationType {
DWORD ActionFlags;
TCHAR* pwszDialogTitle;
TCHAR* pwszDialogText;
TCHAR* pwszSound;
DWORD nMaxSound;
DWORD dwReserved;
} CE_USER_NOTIFICATION, *PCE_USER_NOTIFICATION;
其中變量ActionFlags是一組定義了在到達指定的時間時以何種形式提示用戶的標(biāo)志:PUN_LED(閃動屏幕),PUN_VIBRATE(振動設(shè)備),PUN_DIALOG(顯示對話框),PUN_SOUND(播放聲音文檔)和PUN_REPEAT(重復(fù)聲音文檔10到15秒),他能夠是上述標(biāo)志的任意組合。從程式調(diào)用CeSetUserNotification開始到用戶得到通知的這一時間段中,通知一直處于活動狀態(tài)。如要在他超時之前修改此通知,程式可通過再次調(diào)用CeSetUserNotification來實現(xiàn)
(2)調(diào)用CeGetUserNotificationPreferences,函數(shù)原型為:
BOOL CeGetUserNotificationPreferences(
HWND hWndParent,?
PCE_USER_NOTIFICATION lpNotification?
);
這個函數(shù)可配置用戶通知,以便讓用戶能有修改提示方式的機會,其中hWndParent是提示框父窗口的窗口句柄。
(3)調(diào)用CeClearUserNotification能夠?qū)崿F(xiàn)在用戶通知到達之前清除他。
(4)調(diào)用CeHandleAppNotifications 函數(shù)以確認(rèn)用戶通知。用戶通知到達后需要確認(rèn)。對于顯示提示框的通知,確認(rèn)的方式是點擊提示框的確定按鈕或按下設(shè)備外殼上的通知按鈕(此時用戶通知僅起到提示的作用,不啟動應(yīng)用程式);對于不顯示提示框的通知,系統(tǒng)將在任務(wù)欄上顯示注冊該通知的程式的圖標(biāo),當(dāng)用戶點擊此圖標(biāo)時系統(tǒng)將啟動相應(yīng)的應(yīng)用程式的一個實例(系統(tǒng)還傳遞一個命令行參數(shù)lpCmdLine以表明為什么應(yīng)用程式會運行,該參數(shù)是串 APP_RUN_TO_HANDLE_NOTIFICATION加空格加通知的句柄)。對于不顯示提示框的用戶通知,在應(yīng)用程式中要調(diào)用 CeHandleAppNotifications 函數(shù)來確認(rèn)通知,該函數(shù)將任何用于應(yīng)用程式的活動通知都標(biāo)記為已處理,并刪除任務(wù)欄上的圖標(biāo)。在實際編碼時還要考慮是否有該應(yīng)用程式的另一個實例在運行,如有,則應(yīng)向他發(fā)送一個自定義消息由該實例處理此通知并終止自身以節(jié)省資源。
(5)調(diào)用CeRunAppAtTime生成“定時器事件通知”,函數(shù)原型為:
BOOL CeRunAppAtTime(
TCHAR* pwszAppName,?
SYSTEMTIME* lpTime?
);
其參數(shù)含義是:lpTime是個結(jié)構(gòu)指針,該結(jié)構(gòu)指定了運行應(yīng)用程式的時間;pwszAppName是要運行的應(yīng)用程式的名稱。由于只是在給定的時間自動運行某個應(yīng)用程式,因此比較簡單。要修改“定時器事件通知”,只要再次調(diào)用CeRunAppAtTime。因為后一次調(diào)用CeRunAppAtTime將替換前一次的通知。要清除“定時器事件通知”,只要在調(diào)用CeRunAppAtTime時,在參數(shù)lpTime中傳遞一個NULL指針。
(6)調(diào)用CeRunAppAtEvent生成″系統(tǒng)事件通知″,函數(shù)原型:
BOOL CeRunAppAtEvent(
TCHAR* pwszAppName,?
LONG lWhichEvent?
);
其參數(shù)含義是:pwszAppName是要運行的應(yīng)用程式的名稱;lWhichEvent 是指出要監(jiān)控哪一個事件,標(biāo)志常量如下:
NOTIFICATION_EVENT_NONE 清除事件通知
NOTIFICATION_EVENT_SYNC_END 同步完成通知
NOTIFICATION_EVENT_DEVICE_CHANGE 添加或刪除設(shè)備通知?
NOTIFICATION_EVENT_RS232_DETECTED 檢測到RS232連接通知
NOTIFICATION_EVENT_TIME_CHANGE 系統(tǒng)時間更改通知
NOTIFICATION_EVENT_RESTORE_END 設(shè)備恢復(fù)完成通知
要停止響應(yīng)系統(tǒng)事件通知,應(yīng)用程式只要再次調(diào)用CeRunAppAtEvent,并在lWhichEvent參數(shù)中傳遞其名稱和NOTIFICATION_EVENT_NONE。
3 通知API的使用代碼實例
#include?
CE_USER_NOTIFICATION g_ceun;?
(1) 對CE_USER_NOTIFICATION結(jié)構(gòu)初始化的代碼片段. memset (&g_ceun, sizeof(g_ceun));
g_ceun.ActionFlags = PUN_DIALOG;?
g_ceun.pwszDialogTitle = szDlgTitle;?
g_ceun.pwszDialogText = szDlgText;?
g_ceun.pwszSound = szSound;?
g_ceun.nMaxSound = sizeof(szSound);?
(2)注冊用戶通知的代碼片段:
SYSTEMTIME st; GetLocalTime (&st);
GetModuleFileName (hInst, szExeName,sizeof(szExeName));
hNotify = CeSetUserNotification (0, szExeName,&st, &g_ceun);?
(3)配置用戶通知的代碼段:
CeGetUserNotificationPreferences(hWnd, &g_ceun);?
(4)使用CeHandleAppNotifications并只運行一個實例(為節(jié)省資源)的代碼段 :
//判斷應(yīng)用程式的啟動是否源于用戶通知
If (lstrcmp(szText,APP_RUN_TO_HANDEL_NOTIFICATION==0)
GetModuleFileName (hInst, szText, sizeof(szText));
CeHandleAppNotifications (szText);?
hNotify =(HANDLE)_wtol(pPtr); //取通知的句柄
//檢查是否已有應(yīng)用程式的實例在運行
hWnd = FindWindow(NULL, szAppName);
if(hWnd)//如有,向他發(fā)送一個自定義消息,由他處理此用戶通知
SendMessage(hWnd, MYMSG_TELLNOTIFY, 0, (LPARM)hNotify);
//終止自身, 代碼略去
(5)使用“定時器事件通知”的代碼段:?
SYSTEMTIME st; GetLocalTime (&st);
GetModuleFileName (hInst, szExeName, sizeof(szExeName));
CeRunAppAtTime (szExeName, &st);
(6)使用“系統(tǒng)事件通知”的代碼段:
LONG lEvent;?
if (IsDlgButtonChecked(hWnd, IDC_SYNC_END) ==1)
lEvent != NOTIFICATION_EVENT_SYNC_END;
if (IsDlgButtonChecked(hWnd, IDC_SERIAL_DETECT)==1)?
lEvent !=NOTIFICATION_EVENT_RS232_DETECTED;?
if (IsDlgButtonChecked(hWnd, IDC_DEVICE_CHANGE)== 1)
lEvent != NOTIFICATION_EVENT_DEVICE_CHANGE;
if (IsDlgButtonChecked(hWnd, IDC_TIME_CHANGE)==1)
lEvent != NOTIFACTION_EVENT_TIME_CHANGE;?
if (IsDlgButtionChecked(hWnd, IDC_RESTORE_END) ==1)
lEvent != NOTIFICATION_EVENT_RESTORE_END;
GetModuleFileName (hInst, szExeName, sizeof(szExeName);?
CeRunAPpAtEvent(szExeName, lEvent);?
以上我們介紹了Windows CE Notification API的使用方法,關(guān)于Windows CE應(yīng)用程式研發(fā)環(huán)境的使用。
總結(jié)
以上是生活随笔為你收集整理的Windows CE Notification API的使用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探讨如何成为技术团队管理者
- 下一篇: 介绍一种很棒的wince 如何替换系统声