打个比方 MessageBox(str, NULL, MB_OK);在按钮消息里可以直接使用
在自定义函数里 写就需要再前面加个NULL
为什么呢 还有那些GetDlgItem()-> 这样的类型 也说什么不能接受什么函数这类的 在按钮消息里却正常使用 为什么不能统一使用呢? 我该如何解决?

解决方案 »

  1.   

    我在 PreTranslateMessage 写消息也是不行的RECT r;
    GetDlgItem(IDC_RR)->GetWindowRect(&r);
    error C2660: “GetDlgItem”: 函数不接受 1 个参数
    error C2227: “->GetWindowRect”的左边必须指向类/结构/联合/泛型类型
      

  2.   

    像这样子的函数,每个类都不一样的。你最好能再msdn上查看相应的。你的GetDlgItem是在哪个类中写的,看看继承的父类中,GetDlgItem参数是什么。
      

  3.   

    基类不同,它自带的函数当然也不同,试试
    ::MessageBox(...)
      

  4.   

    这些函数都应该在CWnd类或其子类里用
    说少一个参数的都是直接掉的api不是成员函数
    MFC封装了api,很多同名函数,省略了第一个参数应该是一个小错误卡主了建议楼主贴代码
      

  5.   

    谢谢大家 谢谢!!
    我该如何解决呢
    必须要在基本上面入手吗 不能改下源代码就能解决的么
    就是改这个
    RECT r;
    GetDlgItem(IDC_RR)->GetWindowRect(&r);让他直接不报错使用
      

  6.   


    PreTranslateMessage(MSG* pMsg)
    {
      RECT r;
      ::GetDlgItem(pMsg->hwnd, IDC_RR)->GetWindowRect(&r);  ……
      

  7.   

    因为你自己定义的函数,不是在一个类中,所以需要全局的。
    比如AfxMessageBox()你放哪都能用。
      

  8.   

    我用的是MFC工程
    添加自定义函数也不行
      

  9.   

    MessageBox(str, NULL, MB_OK);是MFC的方法
    MessageBox(NULL, str, NULL, MB_OK);是API,相当于::MessageBox(NULL, str, NULL, MB_OK)