代码之家  ›  专栏  ›  技术社区  ›  Adam Haile

在Windows Mobile上,显示窗体没有最大化,边框为

  •  1
  • Adam Haile  · 技术社区  · 16 年前

    我需要为需要更新的Windows Mobile应用程序(C 2.0)创建一个状态对话框,因此MessageBox已关闭。我试图创建一个新的表单类,更改大小并调用ShowDialog,但它总是全屏显示(当然,不包括标题栏)。我能弄清楚如何将其显示得很小的唯一方法是将FormBorderStyle设置为“无”,但实际上它根本没有边框或标题栏!

    我希望它看起来仍然像一个消息框(带有标题栏和边框),但我需要实际使用一个表单,以便更新它。

    有什么办法吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   BenMorel Manish Pradhan    11 年前

    这里的挑战是winmo shell本身。不明显的是表单上的标题(在屏幕顶部)实际上不是您看到的表单的标题-它是一个完全不同的应用程序。因此,要使窗体“浮动”,需要破坏shell处理窗体显示的方式。一种快速而肮脏的方法是将窗体borderStyle设置为“无”,但这样会丢失标题栏。然后,一个选项是用onpaint中的fillRect和drawString手动绘制它。不太难,也不需要任何p/invoke恶作剧,但它要求在布局控件时考虑新的头。

    另一个选项是使用p/invoke并自己操作表单的样式位。这很好,但要注意在代码中的正确位置执行,因为必须在窗口创建时设置一些位。同样要小心外壳,因为它可能想把你身上的位改变回来——所以这个机制需要更多的测试和对细节的关注。我觉得这是条更好的路线,我 blogged about it in more detail here . 这个博客条目并不是专门针对浮动表单的,但它很好地涵盖了样式操作。有关非全屏窗体的详细信息,请参阅 my other blog entry here .

        2
  •  2
  •   saku    16 年前