winceドライバによるブロードキャストメッセージの送信
【オリジナル】winceドライバがブロードキャストメッセージを送信
winceの駆動の下で、カスタムのメッセージを追加して、ある時HWND_に送信しますBROADCASTは、アプリケーション層において、対応するプログラムがこのメッセージを受信し、対応する処理を行う.
ドライバの定義送信メッセージ:(例:)
アプリケーション層構成は、カスタムメッセージを受信します.
1、メッセージ定義の追加:(駆動層間の定義と同じ)(対応するcppファイルに追加)//信号メッセージstatic UINT WM_TGD_SIGNAL = RegisterWindowMessage(_T("TGD_SIGNAL_MESSAGE"));
2、受信メッセージ処理関数を追加する:
(対応するヘッダファイルに宣言を追加)
(対応するcppファイルに処理を追加)
3、カスタムメッセージと受信関数のマッピングを追加する:(cppファイルに追加し、次の青い太字部分を追加する)BEGIN_MESSAGE_MAP(CD3GOtherDlg, CDialog) #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP) ON_WM_SIZE() #endif //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTN_EXIT, &CD3GOtherDlg::OnBnClickedBtnExit) ON_BN_CLICKED(IDC_BTN_GET_NET_MSG, &CD3GOtherDlg::OnBnClickedBtnGetNetMsg) ON_BN_CLICKED(IDC_BTN_CHECK_WORK, &CD3GOtherDlg::OnBnClickedBtnCheckWork) ON_REGISTERED_MESSAGE(WM_TGD_SIGNAL, OnSelfMessageHandle) END_MESSAGE_MAP()
ここで、アプリケーション層で最下位層から送信されたメッセージを受信することができます.この場合、ブロードキャストメッセージがあり、必要なアプリケーションを通知する必要があります.このメッセージを受信する必要があるアプリケーションは受信処理を追加すればよい.
上記の方法は、最下位ドライバが1つのメッセージを送信した後、上位のいくつかのアプリケーションが対応するメッセージを受信することができ、伝達されたパラメータも正しいことをテストした.
winceの駆動の下で、カスタムのメッセージを追加して、ある時HWND_に送信しますBROADCASTは、アプリケーション層において、対応するプログラムがこのメッセージを受信し、対応する処理を行う.
ドライバの定義送信メッセージ:(例:)
//********************************************************************
// Function : SendSIGNALMessage
// Description :
// Input : signal :
// Output : NONE
// return : TRUE/FALSE
//********************************************************************
BOOL SendSIGNALMessage(int signal)
{
BOOL ret = FALSE;
//
static UINT WM_TGD_SIGNAL = RegisterWindowMessage(_T("TGD_SIGNAL_MESSAGE"));
if(WM_TGD_SIGNAL){
ret = PostMessage(HWND_BROADCAST, WM_TGD_SIGNAL, (WPARAM)signal, 0);
if(!ret)
RETAILMSG(1, ( TEXT("### Send SIGNAL Message Fail! ###\r
") ));
else
RETAILMSG(1, ( TEXT("### Send SIGNAL Message Success! signal:%d ###\r
"), signal ));
}
else{
RETAILMSG(1, ( TEXT("### RegisterWindowMessage WM_TGD_SIGNAL Fail! ###\r
") ));
}
return ret;
}
アプリケーション層構成は、カスタムメッセージを受信します.
1、メッセージ定義の追加:(駆動層間の定義と同じ)(対応するcppファイルに追加)//信号メッセージstatic UINT WM_TGD_SIGNAL = RegisterWindowMessage(_T("TGD_SIGNAL_MESSAGE"));
2、受信メッセージ処理関数を追加する:
(対応するヘッダファイルに宣言を追加)
afx_msg LRESULT OnSelfMessageHandle(WPARAM wParam, LPARAM lParam);
(対応するcppファイルに処理を追加)
//********************************************************************
// Function : OnSelfMessageHandle
// Description :
// Input : wParam :
// Input : lParam :
// Output :
// return : LRESULT
//********************************************************************
LRESULT CD3GOtherDlg::OnSelfMessageHandle(WPARAM wParam, LPARAM lParam)
{
CString tmp;
tmp.Format(_T("wParam:%d, lParam:%d"), wParam, lParam);
MessageBox(tmp, L" ");
return 1;
}
3、カスタムメッセージと受信関数のマッピングを追加する:(cppファイルに追加し、次の青い太字部分を追加する)BEGIN_MESSAGE_MAP(CD3GOtherDlg, CDialog) #if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP) ON_WM_SIZE() #endif //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTN_EXIT, &CD3GOtherDlg::OnBnClickedBtnExit) ON_BN_CLICKED(IDC_BTN_GET_NET_MSG, &CD3GOtherDlg::OnBnClickedBtnGetNetMsg) ON_BN_CLICKED(IDC_BTN_CHECK_WORK, &CD3GOtherDlg::OnBnClickedBtnCheckWork) ON_REGISTERED_MESSAGE(WM_TGD_SIGNAL, OnSelfMessageHandle) END_MESSAGE_MAP()
ここで、アプリケーション層で最下位層から送信されたメッセージを受信することができます.この場合、ブロードキャストメッセージがあり、必要なアプリケーションを通知する必要があります.このメッセージを受信する必要があるアプリケーションは受信処理を追加すればよい.
上記の方法は、最下位ドライバが1つのメッセージを送信した後、上位のいくつかのアプリケーションが対応するメッセージを受信することができ、伝達されたパラメータも正しいことをテストした.