程序代码:
_FindMessage proc uses esi ebx edx,uMsg:DWORD
lea esi,lpDebugMsg
xor edx,edx
.while edx < nNumOfDebugMsg
mov eax,uMsg
.if eax == dword ptr [esi]
mov eax,edx
ret
.endif
inc edx
add esi,sizeof(DebugMsg)
.endw
mov eax,-1
ret
_FindMessage endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;功 能:打印当前消息
;参 数:当前消息
;返回值:无返回值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_PrintDebugMsg proc uses esi ebx edx,uMsg:DWORD
invoke _FindMessage,uMsg
.if eax != -1
lea esi,lpDebugMsg
mov ebx,sizeof(DebugMsg)
mul ebx
add esi,eax
add esi,4
invoke OutputDebugString,dword ptr [esi]
.endif
xor eax,eax
ret
_PrintDebugMsg endp
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
程序代码:
/************************************************************************
*功 能:查找当前消息
*参 数:当前消息
*返回值:返回所在的索引
************************************************************************/
int FindMessage(UINT uMsg)
{
int nIndex = 0;
while (nIndex < MAX_MSG)
{
if (uMsg == g_stMonitorMessage[nIndex].m_nMessage)
{
return nIndex;
}
nIndex++;
}
return -1;
}
/************************************************************************
*功 能:打印当前消息
*参 数:当前消息
*返回值:无返回值
************************************************************************/
void PrinterMessage(UINT uMsg)
{
int nIndex = FindMessage(uMsg);
if (nIndex != -1)
{
OutputDebugString(g_stMonitorMessage[nIndex].m_lpMessage);
}
}
这是小沙弥的代码的精华所在,把windows程序设计里的索引方式和OutputDebugString结合达到了自己想要的结果
,思路很好,只有想不到的,没有做不到的,继续努力