小弟我用hook截获了一个键盘消息后为什么会弹出两个对话框,应该只有一次的

我用hook截获了一个键盘消息后为什么会弹出两个对话框,应该只有一次的
#include   "stdafx.h "
#include   "hook.h "
#include   <stdio.h>
HINSTANCE   g_hInst;
#pragma   data_seg   ( "shared ")
static   HHOOK   g_hHook=NULL;
#pragma   data_seg   ()
LRESULT   CALLBACK   KeyboardProc(int   iCode,WPARAM   wParam,LPARAM   lParam);
BOOL   APIENTRY   DllMain(   HANDLE   hModule,  
    DWORD     ul_reason_for_call,  
    LPVOID   lpReserved
    )
{
switch(ul_reason_for_call)
{
case   DLL_PROCESS_ATTACH:
g_hInst   =   HINSTANCE(hModule);
break;
case   DLL_PROCESS_DETACH:
break;
case   DLL_THREAD_ATTACH:
break;
case   DLL_THREAD_DETACH:
break;  
}
return   1;
}


DLLEXPORT   int   CALLBACK   InstallHOOK()
{
g_hHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0);
if   (g_hHook)
return   TRUE;
else  
return   FALSE;
}

DLLEXPORT   int   CALLBACK   UninstallHOOK()
{

if   (UnhookWindowsHookEx(g_hHook)==0)
return   FALSE;
else
return   TRUE;

}

LRESULT   CALLBACK   KeyboardProc(
    int   iCode,               //   hook   code
    WPARAM   wParam,     //   virtual-key   code
    LPARAM   lParam       //   keystroke-message   information
    )
{

if((GetAsyncKeyState(VK_CONTROL)&0X8000)&&wParam==VK_F12)
{
MessageBox(NULL,   "DLL ",   "www ",   MB_OK);
}

return   CallNextHookEx(g_hHook,iCode,wParam,lParam);

}

MessageBox(NULL,   "DLL ",   "www ",   MB_OK)会出现两次,怎么回事啊???
其他的.h   .cpp   .def就只是一些定义而已


------解决方案--------------------
你按一下键盘对应的确实是两个消息,一个按下,一个弹上,对应的是WM_KEYDOWN和WM_KEYUP