none
metro dll里可以自己画界面吗? RRS feed

  • 问题

  • 制作metro下的输入法,利用tsf,为一个dll,在这个dll里需要使用到显示候选词等的窗口,而metro下已经不支持createwindos等接口了,该如何来生成窗口用来显示候选词,谢谢

    2012年7月20日 8:09

答案

全部回复

  • 制作metro下的输入法,利用tsf,为一个dll,在这个dll里需要使用到显示候选词等的窗口,而metro下已经不支持createwindos等接口了,该如何来生成窗口用来显示候选词,谢谢

    • 已合并 Bob Shen 2012年7月23日 8:55 duplicate
    2012年7月20日 8:09
  • Hi,

    Metro程序与传统的窗口程序并不同,Metro的页面使用的是Page类,因此更加接近于网页而不是窗口也没有了传统的弹出窗口等等。因此我建议可以使用popup控件,可以在现有的内容的顶端显示内容在里面放入GridView来显示选词。

    Popup文档:
    http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.popup.aspx

    Hope this helps

    2012年7月23日 7:11
    版主
  • Hi,Aaron

    谢谢你的指导,我建立了一个metro风格的dll(vc++),但是在这个dll里无法使用命名空间 windows::ui 所以也就无法使用popup ,这个该如何解决,谢谢

    2012年7月23日 8:41
  • Hi,

    这样的话没有必要用Metro来开发输入法程序,Metro并不合适,你可以用正常的Windows下开发输入法程序不过想要兼容Metro程序需要进行声明。

    To declare an IME as compatible with Metro style apps, set the dwCaps field with TF_IPP_CAPS_IMMERSIVESUPPORT.

    你可以参考下面这篇文章:

    http://msdn.microsoft.com/en-us/library/windows/apps/hh967425.aspx

    Hope this helps

    2012年7月24日 2:49
    版主
  • Hi,问题是在metro下的createwindow这些api都是弃用的,无法按原有方法去开发,有什么其他方法吗?
    2012年7月24日 11:03
  • Hi,

    开发Metro下的输入法,依然用的是windows开发的方式,换句话说你在windows 7下面怎么开发输入法在Metro一样可以。只不过在Metro中使用输入法有一些限制,比如输入法如果要是用网络的话Metro程序要允许Internet接入才能使用。不过要显示候选词在Metro当中需要使用owned-window来让你创建的窗口能够浮现在Metro程序的上方。这些在上面的文章中都有提到过。

    我希望能为你找到一个例子,不过很遗憾微软并没有推出官方的IME示例程序,我找到了一个cookbook在第99页有IME开发的一些内容,不过也比较少。

    http://www.microsoft.com/en-us/download/details.aspx?id=27416


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年7月24日 13:46
    版主
  • Hi,Aaron,谢谢你的解答,我通过查看cookbook后发现,

    Use the existing text services framework (TSF) infrastructure to implement your IME logic and the Metro style common controls for your UIs. Create owned windows to host your UI.

    这是cookbook里的原话,说到了需要用metro style common controls for uis 这句话是不是说 需要用到metro的一些控件呢?如果是这样的话,还是需要metro风格的控件的。不知道是不是我理解有误,求解答,谢谢

    2012年7月25日 2:36
  • Hi,

    我想这句话的意思是用TSF来实现IME的逻辑以及用TSF来实现Metro风格的UI。上面的提供的这篇文章里也说了,如何做到与Metro程序的兼容。

    http://msdn.microsoft.com/en-us/library/windows/apps/hh967425.aspx

    个人认为开发输入法不太可能会用Metro里的内容,而是传统的windows开发Metro能够兼容。因为Metro的限制很多WinRT出于安全性考虑很多功能没有提供而且Metro程序都是全屏运行或者snap的模式,这样的话如果用Metro开发输入法桌面程序就用不了了。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年7月25日 9:09
    版主