我正在C#中轉換一個C++應用程序,並設法通過大部分工作。但是我堅持用下面的語句:C++這個簡單的宏是幹什麼的?
#define GET_SHCALL_ID(L) (((L) >> 24) & 0x000000FF)
它由接收窗口消息,並通過在lParam的這個調用應用程序的其他部分調用,如下圖所示:
// We perform and event handling to display state as required here..
LRESULT CShockSampleDlg::OnShockCallEvent(WPARAM wParam, LPARAM lParam)
{
// Pass events here so that they will be displayed int the m_LogMessages window.
OnDebugCallEvents(wParam, lParam);
UINT callID = GET_SHCALL_ID(lParam);
UINT chanID = GET_SHCHAN_ID(lParam);
UINT info = GET_SHCHAN_INFO(lParam);
所以我的問題是:
- 什麼是宏/方法在做什麼?
- C#中的等價物是什麼?
那裏是什麼&'0x000000FF'部分?似乎是(L)>> 24'就足以提取'zz'字節。 – 2010-07-21 10:44:49
+1解釋和給出代碼片段.. – Favonius 2010-07-21 10:49:58
@zilgo:(1)有可能'LPARAM'是一個64位整數而不是32位。 (2)有可能'LPARAM'被簽名而不是無符號。 – kennytm 2010-07-21 10:50:22