请问GetSafeHwnd()的问题我在VC++2005的环境下。以前用下面的这个函数想主线程发送一个消息是可以的,当时用这个函数所在的类是以CWinThread为基类的。 ::SendMessage( (HWND)( GetMainWnd()->GetSafeHwnd() ),
                   WM_4CHARACTEROVERFLOW,
                   (WPARAM)i++,
                   NULL );现在我在一个单独的类(就是没有任何的基类,完全是自己写得)的函数里面再用这个函数,编译报错说是
error C2227: left of '->GetSafeHwnd' must point to class/struct/union/generic type请问这是什么原因,必须得有个CWinThread做为基类才可以用这个函数吗?谢谢

解决方案 »

  1.   

    (HWND)((主对话框类*)GetMainWnd())->GetSafeHwnd();这样试试
      

  2.   

    楼上正解,必须是CWnd的派生窗口类。
    你如果要得到对话框的句柄,换其他函数吧。如:FindWindow之类的。
      

  3.   

    GetSafeWnd是CWnd的类成员,你既然没有从此类中派生,你需要自己实现这个成员函数,
      

  4.   

    如果你是用在线程中,向主窗口发消息的话!可以用楼上的,AfxGetMainWnd()->SendMessage(...);
    或AfxGetMainWnd()->PostMessage(...);根据需要使用,一般用PostMessage 异步方式
      

  5.   

    如果在线程中的话,利用GetSafeHwnd将HWND窗口句柄传递进入,利用SendMessage/PostMessage(HWND, ...);来发送消息