我新建了一个VIN32 DLL程序 因为以前都是学MFC 所以想搞下WIN32
但是发现MFC的SetTimer跟Registerhotkey都不能用 参数不知道怎么设置了
WIN32://回调函数
void CALLBACK TimerProc1(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
PostMessage(::FindWindow(NULL,"计算器"),WM_KEYDOWN,GetKeyCode("A"),MapVirtualKey(GetKeyCode("A"),0)<<16);
}

//自动按A
if (id==IDC_CHECK1)
{
int EditIntsz;
BOOL fl;
if (IsDlgButtonChecked(dlg,id))
{
            EditIntsz=::GetDlgItemInt(::FindWindow(NULL,"King"),IDC_EDIT3,&fl,true);
SetTimer(NULL,1,(int)EditIntsz*1000,(TIMERPROC)TimerProc1);
}
else
{
KillTimer(NULL,1);
}
}
此为我WIN32 DLL里的代码 后台按键是可以了 但是奇怪的是他会一直按A 不是1秒 而且取消打勾之后还会一直按
请问各位大牛 我哪里写错了?
还有registerhotkey
MFC需要申明个wm_hotkey 还有Onhotkey
但是在WIN32我不知道在哪里申明
请问谁能详细说下 我弄了一天了 网上找的都是MFC的

解决方案 »

  1.   

    应该是你的killtimer没成功,
    UINT_PTR m_nMyTimer = 0 ;  m_nMyTimer = ::SetTimer(NULL,1000,(int)EditIntsz*1000,(TIMERPROC)TimerProc1);
    killtimer
    ::KillTimer(NULL,m_nMyTimer);
      

  2.   

    killtimer还是没成功 取消还是会一直按
      

  3.   

    是不是IsDlgButtonChecked(dlg,id)有问题,KillTime没经过。
      

  4.   

    没有 我试过其他的 用MessageBox来判断 取消打勾是可以的
      

  5.   

    窗口消息循环里检查是否为WM_HOTKEY,若是,则调用相应处理函数
      

  6.   

    原来UINT_PTR m_nMyTimer = 0 ; 
    得定义为全局变量 我设置成局部变量就不行了