调用VC写的dll,显示非模态对话框,总是要双击才能激活c#的主界面。

chensan 2009-04-13 04:35:32
我的主程序是c# winform,调用自己写的一个dll(VC编写),这个函数显示一个非模态对话框,显示和功能都没有问题。现在的问题是打开这个对话框后,总要点击2次才能激活后面的c#主窗口的菜单。

点第一次只是相当于激活后面的窗口,百思不得其解。
...全文
281 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chensan 2009-04-16
  • 打赏
  • 举报
回复
没用,好像是ms的一个bug?
chensan 2009-04-14
  • 打赏
  • 举报
回复
我在vs2005加载mainmenu,可以,toolbar也可以。

看来是05的menustrip和toolstrip的问题。
chensan 2009-04-14
  • 打赏
  • 举报
回复
晕了,用vs2003调用就没有问题,vs2005和2008都有问题,难道是菜单控件的问题?

vs2003程序升级为2005也没有问题。
chensan 2009-04-14
  • 打赏
  • 举报
回复
现在最奇怪的是为什么button可以一次激活,menu和toolbutton却不可以
chensan 2009-04-14
  • 打赏
  • 举报
回复
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);
}
chensan 2009-04-14
  • 打赏
  • 举报
回复
还是不行,我用vc测试程序调用,传或不传父窗口的handle都正常,但是c#程序偏偏不行。
greenery 2009-04-14
  • 打赏
  • 举报
回复
试试把父窗口的句柄传给vc窗口,并设置为它的父窗口。
oyljerry 2009-04-13
  • 打赏
  • 举报
回复
非模式对话框指定主窗口为父窗口等..
chensan 2009-04-13
  • 打赏
  • 举报
回复
如果主窗口是button,就可以一次点击激活,如果是菜单或者工具栏,就不行,非得2次。

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧