zoukankan      html  css  js  c++  java
  • 让人郁闷的“DesktopCompatible”

    最近用C#做Mobile上系统开发的时候,总被一个小问题困扰。我先简单描述一下。
    (开发环境:Win7, VS2008, CHS Mobile 6 Emulator, .NET Compact 2.0)

     1. 在项目中添加“用户控件“(假设使用默认名”UserControl1“);
     2. 在项目内的任意一个地方添加一个“DllImport”指令;例如下面两行:
        [DllImport("coredll.dll")]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
     3. 编译项目;
     4. 打开主窗体设计器,在“工具箱”中找到刚刚添加的“UserControl1”(一般在工具箱的顶部);
     5. 把工具箱中的“UserControl1”添加入窗体(Form)内。

    正常情况下,你应该可以在窗体内看到“UserControl1”的界面,
    然而不幸的是,这个界面内只居中显示一个用户控件的名称
    (比如“SmartDeviceProject1.UserControl1”等).
    这是一件让人很不解的事情,也让俺很烦心!

    通常我们可能会希望能够在设计阶段直接看到“UserControl1”的实际界面,而不只是一个“占位符”。
    因为我们可能会对“UserControl1”的背景进行贴图,我们也可能会使用代码限制它的显示尺寸等等。
    可是“占位符”只带来一种信息:我就在这里了……

    我试图搜索相关问题的解决办法,来改变我所遇到的这种烦心事。可总是找不到太合适的资料。
    最让人恼火的事还有,就是我不知道如何来描述这种现象!

    不过,最后我还是通过一定的努力找到一种让人信服的说法和解决办法。
    那是在来自MSDN的示例代码中,我通过比对他们对“控件继承物”的处理策略,终于找到了一个
    名为“DesktopCompatible”的,让我摸不到边的属性:把它设置成“true”就可以啦!

    和我一样不太懂的朋友可能对我刚才那种模糊不全的说法很恼火。不过,请先不要着急,听我慢慢道来。

    喜欢使用搜索引擎的人可能已经对“DesktopCompatible”展开大规模的搜索了。
    嗯,这是很不错的。因为我下面将要说的话,也基本来自于那引些“玩意儿”。


    这又在微软搞的“技术”,貌似是在VS2005的时候新加入的。同时加入的新玩意儿还有“Class Designer”
    (我在这里姑且叫它的“类设计器”吧),相对于“Form Designer”(窗体设计器),等玩意儿。
    当然,类似的新意儿还不少,不过我并不打算在这里开展新事物表彰大会,因此就点到为止吧。


    在一篇名为“Creating and Migrating Smart Device Custom Controls by Using Visual Studio 2005”的文章
    (来自于MSDN,发布于:April 2006)的文章里,我找到一些可以解释一点我的困惑的技术细节,
    相信可对于想要更多了解使用“DesktopCompatible”属性的理由的您,也能起到一点解惑答疑的功效。呵呵。

    下面是我参考过的文章:

    DesktopCompatible(True) - Inherited Controls
    http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/c8ea41e6-5012-4e7c-9e18-e158d8eb6620/

    Creating and Migrating Smart Device Custom Controls by Using Visual Studio 2005
    http://msdn.microsoft.com/en-us/library/aa446500.aspx


    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    一句话总结
    -----------
    要解决我最前面描述的那种现象,只需要在你的工程中加入一个包含下面 6 行 内容的.xmta文件。
    <?xml version="1.0" encoding="utf-16"?>
    <Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
      <Class Name="SmartDeviceProject1.UserControl1">
        <DesktopCompatible>true</DesktopCompatible>
      </Class>
    </Classes>


  • 相关阅读:
    普通文本(.txt)篇章排版样式参考 [文档说明][日志]
    C++基础练习案例
    Markdown 编写技巧汇总(二)
    Markdown 编写技巧汇总(一)
    有关C++程序设计基础的各种考题解答参考汇总
    有关算法与数据结构的考题解答参考汇总 [C++] [链表] · 第三篇
    有关算法与数据结构的考题解答参考汇总 [C++] [链表] · 第二篇
    有关算法与数据结构的考题解答参考汇总 [C++] [链表]
    DOS批处理小案例应用分享
    基于Processing图像序列处理保存导出的流程梳理
  • 原文地址:https://www.cnblogs.com/wellsoho/p/1593329.html
Copyright © 2011-2022 走看看