除了用FindWindowA()函数还有什么方法得到对话框句柄呢?比如对象或者指针可以吗?怎么弄啊!谢谢!

解决方案 »

  1.   

    如果有owner或者parent就容易了
      

  2.   

    FindWindow一般用于查找跨进程的窗口,同一进程可以通过全局对象保存。
      

  3.   

    用哪个对话框的指针GetSafeHwnd()
      

  4.   

    获得窗体指针然后GetSafeHwnd()。这个绝对可以
      

  5.   

    HWND hd = mbw->GetSafeHwnd();
    是这样用吗?那个mbw就是我的对话框的指针,但是怎么报这个错误呢?Yuyan.cpp(31) : error C2227: left of '->GetSafeHwnd' must point to class/struct/union
      

  6.   

    ID--HANDLE--HWND三者之间的互相转换id->句柄、、、、、hWnd = ::GetDlgItem(hParentWnd,id);id->指针、、、、、CWnd::GetDlgItem();句柄->id、、、、、id = GetWindowLong(hWnd,GWL_ID);句柄->指针、、、、CWnd *pWnd=CWnd::FromHandle(hWnd);指针->ID、、、、、id = GetWindowLong(pWnd->GetSafeHwnd,GWL_ID);                                           GetDlgCtrlID();指针->句柄、、、、hWnd=cWnd.GetSafeHandle() or mywnd->m_hWnd;
      

  7.   

    写这段代码的类是我自己定义的普通类不是对话框类,应该不能用CWnd里的函数吧。。
      

  8.   

    不用FindWindow函数,可以用EnumWindows呀。
    见MSDN上的解释:
    The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window, in turn, to an application-defined callback function. EnumWindows continues until the last top-level window is enumerated or the callback function returns FALSE. SyntaxBOOL EnumWindows(          WNDENUMPROC lpEnumFunc,
        LPARAM lParam
    );
    ParameterslpEnumFunc
    [in] Pointer to an application-defined callback function. For more information, see EnumWindowsProc. 
    lParam
    [in] Specifies an application-defined value to be passed to the callback function.