zoukankan      html  css  js  c++  java
  • 另一种基于 WinCE 的 Silverlight 应用建立过程

    第一种方法:http://www.cnblogs.com/91program/p/5201231.html

    这种方法相对来说比较简单。

    基于 WinCE 的 Silverlight 只支持 C++ 语言编程,但 Expression Blend 只能生成 C# 和 VB.Net,所以不能使用 Expression Blend 生成的代码。
    同样,创建 Win32 应用。
    首先,包含以下 Silverlight 头文件:

    1 #include "xamlruntime.h"  
    2 #include "xrdelegate.h"  
    3 #include "xrptr.h"  

    再包含 Silverlight 库文件:

    1 #pragma comment(lib,"xamlruntime.lib")  

    将 XAML 文件当做资源增加到工程中,具体的操作如下:
    1) 在“资源视图(resource view)”页,右键单击资源,选择“增加资源(add resource...)”
    2) 点击“导入(import)”按键,选择需要导入的 XAML 文件
    3) 输入资源的类型: XAML
    4) 你可以保留默认的资源 ID:IDR_XAML1,但在实际的项目中建议给资源一个形象的名字。
    5) 包含 resource.h 到 cpp 中,以方便对资源 ID 的使用。

    代码:

      1 // SilverlightHelloWorld2.cpp : 定义应用程序的入口点。  
      2 //  
      3   
      4   
      5 #include "stdafx.h"  
      6 #include "SilverlightHelloWorld2.h"  
      7   
      8   
      9 // #include "pwinuser.h"  
     10 #include "xamlruntime.h"  
     11 #include "xrdelegate.h"  
     12 #include "xrptr.h"  
     13   
     14   
     15 #include "resource.h"  
     16   
     17   
     18 #pragma comment(lib,"xamlruntime.lib")  
     19   
     20   
     21 class BtnEventHandler  
     22 {  
     23 public:  
     24   
     25   
     26     HRESULT OnClick(IXRDependencyObject* source,XRMouseButtonEventArgs* args)  
     27     {  
     28         MessageBox(NULL,TEXT("Click!"),TEXT("Silverlight for Windows Embedded test"),MB_OK);  
     29         return S_OK;  
     30     }  
     31 };  
     32   
     33   
     34 int WINAPI WinMain(HINSTANCE hInstance,  
     35                    HINSTANCE hPrevInstance,  
     36                    LPTSTR    lpCmdLine,  
     37                    int       nCmdShow)  
     38 {  
     39     // 初始化 XAML 运行时库  
     40     if (!XamlRuntimeInitialize())  
     41         return -1;  
     42   
     43   
     44     HRESULT retcode;  
     45   
     46   
     47     IXRApplicationPtr app;  
     48   
     49   
     50     // 每个 WinCE Silverlight应用有一个 "Application" 对象, 允许访问全局的资源.  
     51     // 使用  GetXRApplicationInstance API 来获取此应用对象。  
     52     if (FAILED(retcode = GetXRApplicationInstance(&app)))  
     53         return -1;  
     54     // 声明 resources (XAML, images etc.) 在哪里.  
     55     if (FAILED(retcode = app->AddResourceModule(hInstance)))  
     56         return -1;  
     57   
     58   
     59     // 初始化应用对象, 创建 Silverlight 管理的主窗口.  
     60     XRWindowCreateParams wp;  
     61   
     62   
     63     ZeroMemory(&wp, sizeof(XRWindowCreateParams));  
     64     wp.Style       = WS_OVERLAPPED;  
     65     wp.pTitle      = L"Silverlight4WinCESample";  
     66     wp.Left        = 0;  
     67     wp.Top         = 0;  
     68   
     69   
     70     // 从资源中加载 XAML(使用 XRXamlSource 对象).  
     71     // 通过 IXRVisualHostPtr 对象 vhost 在运行时访问 XAML 的内容.  
     72     XRXamlSource xamlsrc;  
     73   
     74   
     75     xamlsrc.SetResource(hInstance,TEXT("XAML"),MAKEINTRESOURCE(IDR_XAML1));  
     76   
     77   
     78     IXRVisualHostPtr vhost;  
     79   
     80   
     81     if (FAILED(retcode = app->CreateHostFromXaml(&xamlsrc, &wp, &vhost)))  
     82         return -1;  
     83   
     84   
     85     IXRFrameworkElementPtr root;  
     86   
     87   
     88     if (FAILED(retcode = vhost->GetRootElement(&root)))  
     89         return -1;  
     90   
     91   
     92     IXRButtonBasePtr btn;  
     93   
     94   
     95     if (FAILED(retcode = root->FindName(TEXT("HelloWorldBtn"), &btn)))  
     96         return -1;  
     97   
     98   
     99     // 当用户点击按键时,使用 delegate 来接收通知.  
    100     BtnEventHandler handler;  
    101   
    102   
    103     IXRDelegate<XRMouseButtonEventArgs> *pClickDelegate;  
    104   
    105   
    106     if (FAILED(retcode = CreateDelegate(&handler,&BtnEventHandler::OnClick,&pClickDelegate)))  
    107         return -1;  
    108   
    109   
    110     if (FAILED(retcode = btn->AddClickEventHandler(pClickDelegate)))  
    111         return -1;  
    112   
    113   
    114     // Silverlight 界面显示  
    115     UINT exitcode;  
    116   
    117   
    118     if (FAILED(retcode = vhost->StartDialog(&exitcode)))  
    119         return -1;  
    120   
    121   
    122     // 由于 pClickDelegate 对象不是智能指针, 所以必须显式释放它.  
    123     pClickDelegate->Release();  
    124   
    125   
    126     return 0;  
    127 }  

    //MSDN 动态按键示例: http://msdn.microsoft.com/en-us/library/ee504258.aspx

     1 #include <windows.h>  
     2 #include <XamlRuntime.h>  
     3 #include <XRPtr.h>  
     4   
     5   
     6   
     7   
     8 void AddElementToTree(IXRApplication* pApplication, IXRVisualHost* pVisualHost)  
     9 {   
    10   IXRButtonPtr greenButton;  
    11   float btnHeight = 6;  
    12   float btnWidth = 12;  
    13   
    14   
    15   IXRCanvasPtr pCanvas;  
    16   IXRUIElementCollectionPtr pnlChildren;  
    17   
    18   
    19   // Create a new UI element  
    20   pApplication->CreateObject(&greenButton);  
    21   
    22   
    23   greenButton->SetHeight(btnHeight);  
    24   greenButton->SetWidth(btnWidth);  
    25   greenButton->SetName(L"MyGreenButton");  
    26   
    27   
    28   // Obtain a pointer to the root of the visual tree  
    29   IXRFrameworkElementPtr pRootElement;  
    30   pVisualHost->GetRootElement(&pRootElement);  
    31   
    32   
    33   // Traverse the visual tree and find a named canvas object  
    34   pRootElement->FindName(L"MyCanvas", &pCanvas);   
    35   
    36   
    37   // Get the collection of elements from the located canvas object  
    38   pCanvas->GetChildren(&pnlChildren);  
    39   
    40   
    41   // Add the new UI element to the collection  
    42   pnlChildren->Add(greenButton, NULL);  
    43 }  
  • 相关阅读:
    ORA01157、01110问题解决
    [转]WebService 中Maximum request length exceeded. 产生错误的原因,以及解决方法.
    [转]oracle9 startup时 报错ORA00600: 参数: [kcratr1_lostwrt]
    [转]八个dos命令
    [转]如何让ActiveX OCX控件下载并自动更新
    ora12154错误
    [转]Oracle分页
    [转]客户端连接数据库报错,ORA12516: TNS: 监听程序无法找到匹配协议栈的可用句柄
    vue中使用on事件被覆盖
    移动端滑动插件
  • 原文地址:https://www.cnblogs.com/91program/p/5201351.html
Copyright © 2011-2022 走看看