我的主程序是c# winform,调用自己写的一个dll(VC编写),这个函数显示一个非模态对话框,显示和功能都没有问题。现在的问题是打开这个对话框后,总要点击2次才能激活后面的c#主窗口的菜单。点第一次只是相当于激活后面的窗口,百思不得其解。

解决方案 »

  1.   

    如果主窗口是button,就可以一次点击激活,如果是菜单或者工具栏,就不行,非得2次。
      

  2.   

    还是不行,我用vc测试程序调用,传或不传父窗口的handle都正常,但是c#程序偏偏不行。
      

  3.   

    vc的代码:
    extern "C"    __declspec(dllexport) void  Opendlg(HWND   hWnd)
      {     
      AFX_MANAGE_STATE(AfxGetStaticModuleState());     
      CAAA   *dlg=new   CAAA(CWnd::FromHandle(hWnd));     
      dlg->Create(IDD_DIALOG1,CWnd::FromHandle(hWnd));     
      dlg->ShowWindow(SW_SHOW);     
      return  ;
      }     c#代码:
    [DllImport("testku.dll")]
    public static extern void Opendlg(IntPtr hwnd);private void button3_Click(object sender, EventArgs e)
            {
                Opendlg(this.Handle);
            }
      

  4.   

    现在最奇怪的是为什么button可以一次激活,menu和toolbutton却不可以
      

  5.   

    晕了,用vs2003调用就没有问题,vs2005和2008都有问题,难道是菜单控件的问题?vs2003程序升级为2005也没有问题。
      

  6.   

    我在vs2005加载mainmenu,可以,toolbar也可以。看来是05的menustrip和toolstrip的问题。