zoukankan      html  css  js  c++  java
  • Metro开发小记

       隨着Windows Mobile的没落,WINCE市场也很快萎缩,使得我这样的老牌WINCE程序员也日暮西山,几近无处解决一日三餐。好在天无绝人之路,终于有机会做Win8 Metro界面的开发。现将开过过程中遇到的问题、体会心得一并记录,以便日后查询及供初学者参照。

             Metro的一些基本概念在这就不再赘述,作为一名工程师我喜欢直接开始写代码而不是来一大堆无关的理论。MSDN中有这方面的入门帖,可以先他细读一下,并将其中的例子抄写并调试,以加强印象。例子可以参见如下网页及其相关的网页:

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

    Metro的开发过程与WIN32的界面开发过程有许多相同之处。归根结蒂它也没有摆脱WIN32中窗口的概念,我觉得可以理解为Metro中的XAML相当于WIN32中的资源文件,只是这种资源文件比RC文件功能更为强大。微软本身也对Metro程序做了很多限制,所以使用Metro开发界面很快,做出来的效果也很好,但同时做某些事情时也很费劲(例如直接操作某个驱动),而某些事情可能压根就做不了。

    以下就列举一些有别于WIN32之处:

    1,  绘图

    相信用过WIN32界面开发的人都对Line,LineTo等函数不会陌生,但在Metro中,这些函数无法使用,我们需要将要绘图的窗口设置成Canvas,再不断的生成Line对象,将其Append到要绘制的窗口中。代码如下:

    XAML:

    <Border BorderBrush="Black" BorderThickness="1" Height="200" Width="400" >

         <Canvas x:Name="CPUInfo"/>

        </Border>

    C++:

    其中CPUInfo即要绘图的Canvas类型的窗口:

               //Line must be created evey times, otherwise, the olde line will disappear.

               line = ref new Windows::UI::Xaml::Shapes::Line( );

               line->Stroke =  m_pLineBrush;

               line->StrokeThickness = 1;

               line->X1=lastPoint.X;

               line->Y1=lastPoint.Y;

               line->X2=lastPoint.X+1;

               line->Y2=y;

               CPUInfo->Children->Append( line );

    以下记录一些常用控件的用法:

    1)ToggleButton

     给ToggleButton中的IsChecked元素赋值(true,false)就可以改变其Checked状态,但读值要使用IsCheck中的Value元素,因IsCheck也是一个Class.

     2)当大于一个Button的Click事件共用一个函数时的处理方法:

    以ToggleButton为例,将sender转化成ToggleButton类型,然后就可以和XAML文件中声名的各个Button直接比较,以确定是哪个Button引发的事件。

    从而避免写了N多消息处理函数的现象,可以使代码整洁一些。
    void MainPage::OnButtoClicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
    {
     ToggleButton ^ pSender  = ( ToggleButton ^)sender;

     if( PowerButton== pSender )
     {

     }else

    {

    }

    }

  • 相关阅读:
    ajax 异步问题
    mysql update 报 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode
    JSON string 和 object 转换
    Mybatis insert 返回主键
    switch case 的值
    $(this).attr("checked") 用jquery取checkbox的值 返回undefined
    7天入门JavaScript,第五天
    7天入门JavaScript,第四天
    7天入门JavaScript,第三天
    保持按钮的高亮状态
  • 原文地址:https://www.cnblogs.com/ceblog/p/2399952.html
Copyright © 2011-2022 走看看