CDialg这个类好像是从CWnd类派生出来的,按理说,这个DestroyWindow可以调用CWnd中的啊,MSDN中CWnd类中的DestroyWindow是不带参的LRESULT CALLBACK KeyboardProc(
  int code,       // hook code
  WPARAM wParam,  // virtual-key code
  LPARAM lParam   // keystroke-message information
)
{
if(VK_SPACE+VK_F4==wParam)
{
DestroyWindow();
return 1;
} return CallNextHookEx(keyboard,code,wParam,lParam);}
但是我这段代码,E:\软件\VC6\VC6\MyProjects\hook\hookDlg.cpp(109) : error C2660: 'DestroyWindow' : function does not take 0 parameters
有这样一个报错,没看懂,请教了,

解决方案 »

  1.   

    在对话框类中调用的却不用带参数,但是你这个 KeyboardProc函数是对话框类的成员函数吗?
      

  2.   

    你的KeyboardProc写的是全局函数嘛
      

  3.   

    API,这儿HWND怎么获得啊?用m_hWnd?这个可能不行吧,
      

  4.   

    囧,你定义个全局的HWND,在合适的地方给它赋值
      

  5.   

    就是不知道这儿怎么获得全这个窗口的句柄嘛,m_hwnd,不行啊,晕死,,,这儿该怎么获得句柄啊,你直接给出代码就OK勒嘛,
      

  6.   


    要不重写虚函数,DestroyWindow,然后跳转到这个虚函数行不行啊,嘿嘿,不知道有米有这个方法
      

  7.   


    要不重写虚函数,DestroyWindow,然后跳转到这个虚函数行不行啊,嘿嘿,不知道有米有这个方法
      

  8.   

    为什么要那么麻烦呢?
    直接给对话框类添加虚函数:PreTranslateMessage(MSG* pMsg)
    对键盘按键进行处理不就可以么
    也就是不用自己写回调函数
      

  9.   

    首先LZ要说清楚想干什么?
    是关掉自己本身窗口?
    还是关闭被Hook的窗口?
      

  10.   

    额,关闭对话框窗口,,我看了孙老师的教程,他是用的sendmessage发送了一个WM_CLOSE的消息,我记得他第一课讲的时候,用的是postmessage发送的WM_QUIT,到现在还没弄清他们的区别,我这儿准备用DestroyWindow来实现,然后再Postmessage的,他一个函数就完成咯,可是我自己还是没学到,擦,
      

  11.   

    HWND hWnd = AfxGetMainWnd()->m_hWnd;
     ::DestoryWindow(hWnd);
      

  12.   

    MSG结构体很难么?
    BOOL CMyMusicPlayerDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类
    if(pMsg->message==WM_KEYDOWN)//处理键盘按键消息
    {
    if(pMsg->wParam==VK_ESCAPE||pMsg->wParam==VK_RETURN)//退出键或者回车键
    return TRUE;
    else
    return CDialog::PreTranslateMessage(pMsg);
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
    慢慢学,不要浮躁