8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Winforms-如何使 MessageBox 显示在 MainForm 的中心?

Gus D 2月前

61 0

Winforms-如何让对话框显示在 MainForm 的中心?这与基于普通窗口默认设置相反,后者将它们显示在屏幕的中心。在我的例子中,我有一个小的

Winforms-如何使对话框显示在 MainForm 的中心?这与基于普通窗口默认设置(将对话框显示在屏幕中心)相反。

在我的例子中,我有一个小的主窗体,例如,它可能被放置在一个角落里,MessageBox 弹出窗口显示在看似很远的地方。

帖子版权声明 1、本帖标题:Winforms-如何使 MessageBox 显示在 MainForm 的中心?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Gus D在本站《winforms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这是用 C 语言编写的 Win32 API。请根据需要进行翻译...

    case WM_NOTIFY:{
      HWND X=FindWindow("#32770",NULL);
      if(GetParent(X)==H_frame){int Px,Py,Sx,Sy; RECT R1,R2;
        GetWindowRect(hwnd,&R1); GetWindowRect(X,&R2);
        Sx=R2.right-R2.left,Px=R1.left+(R1.right-R1.left)/2-Sx/2;
        Sy=R2.bottom-R2.top,Py=R1.top+(R1.bottom-R1.top)/2-Sy/2;
        MoveWindow(X,Px,Py,Sx,Sy,1);
      }
    } break;
    

    将其添加到 WndProc 代码中...您可以根据需要设置位置,在本例中它只是位于主程序窗口的中心。它将对任何消息框、文件打开/保存对话框以及可能的一些其他本机控件执行此操作。我不确定,但我认为您可能需要包含 COMMCTRL 或 COMMDLG 才能使用它,至少,如果您想要打开/保存对话框,您会这样做。

    我尝试查看 NMHDR 的通知代码和 hwndFrom,然后决定不这样做同样有效,而且容易得多。如果您真的想非常具体,请告诉 FindWindow 查找您为要查找的窗口提供的唯一标题(标题)。

    这会在消息框绘制到屏幕上之前触发,因此如果您设置一个全局标志来指示代码何时完成操作,并寻找唯一的标题,则请确保您采取的操作只会发生一次(可能会有多个通知程序)。我还没有详细探讨过这个问题,但我设法让 CreateWindow 在消息框对话框中放置一个编辑框/它看起来像老鼠的耳朵嫁接到克隆猪的脊椎上一样不合适,但它确实有效。以这种方式做事可能比自己动手容易得多。

    乌鸦。

    编辑:进行小幅修正以确保处理正确的窗口。确保父句柄始终一致,这样应该可以正常工作。对我来说,即使使用同一程序的两个实例,它也能正常工作...

返回
作者最近主题: