我用MFC创建的DLL,DLL中有个非模式对话框。
其对话框的Style为:Child。
在DLL中,我有如下一个导出函数,作用是移动和放缩对话框的。
extern "C" __declspec(dllexport) void MoveDlg(CRect rect)
{
     AFX_MANAGE_STATE(AfxGetStaticModuleState());
     if(pDlg)
pDlg->MoveWindow(rect,TRUE); }
其虽然正确运行了,但却没起作用

解决方案 »

  1.   

    应该没有问题。只是if(pDlg)应改为if(pDlg && ::IsWindow(pDlg->GetSafeHwnd()))
      

  2.   

    if(::IsWindow(pDlg->GetSafeHwnd())就可以了
      

  3.   

    if(::IsWindow(pDlg->GetSafeHwnd()))sorry~少了一个括号
      

  4.   

    还是没有用,
    如果我将pDlg->MoveWindow(rect,TRUE); 换成
    pDlg->ShowWindow(SW_HIDE);就有效果。
    所以很奇怪。
      

  5.   

    我仔细看了看,对话框是放缩了。
    是因为上面的控件没有随着放缩,而导致我的观察失误。
    怎么让上面的控件自动随对话框移放缩,我可不想在OnSize里去控制每个控件。
    谢谢
      

  6.   

    自动随对话框移放缩就不好办了。如果你的缩放有一定的规律,那么可以用几个CArray<CWnd*,CWnd*>把控件在OnInitialDlg()的时候把需调整的控件加到这些数组中。代表行、列。然后在dlg中的OnSize中,用for来调整。