wince R3 silverlight编程概要

wince R3 silverlight编程概要,第1张

概述写个概要吧 1.用blend 3 画个界面(blend 2也行,但不好),可以在pc上运行获得想要的界面后,将生成的.xaml文件copy 到你的工作目录 2.下载XAML2CPP.exe 1.02版本的,执行 XAML2CPP.exe xaml文件名 生成class模板和你的xaml中定义class的头文件,定义class 例: 生成的头文件添加按钮等等 /* This file has bee

写个概要吧
1.用blend 3 画个界面(blend 2也行,但不好),可以在pc上运行获得想要的界面后,将生成的.xaml文件copy 到你的工作目录

2.下载XAML2CPP.exe 1.02版本的,执行 XAML2CPP.exe xaml文件名 生成class模板和你的xaml中定义class的头文件,定义class
例:

生成的头文件添加按钮等等

/*
This file has been generated by XAML2CPP tool version 1.0.2.0.
Modifications to this source code may be overwritten without warning when the XAML2CPP tool is executed.
XAML2CPP (c) 2009 by Valter Minute ([email protected])
This code is provIDed as is and it's generated automatically. It's up to the developer to check that it works as expected.
*/
#pragma warning(disable : 4996)

#ifndef Page_TEMPLATE_header_file_H
#define Page_TEMPLATE_header_file_H
#include "windows.h"
#include "pwinuser.h"
#include "xamlruntime.h"
#include "XRCustomControl.h"
#include "xrdelegate.h"
#include "xrptr.h"
#include "XAML2CPPBase.h"
#include "XAML2CPP_res.h"
//#include <atlstr.h>
/*
class generated by XAML2CPP from ./Page.xaml
*/
template <class X,class B=XAML2CPPPage>
class TPage : public B
{
public:
    TPage(TCHAR* Title=TEXT("Page"),TCHAR* xamlID=IDR_XAML_Page) : B(Title,xamlID)
    {
    }
   
protected:

    // XAML defined objects (declared as smart pointers)
 IXRGrIDPtr LayoutRoot;

 IXRCanvasPtr Menubutton[10];
 
 IXRRectanglePtr MenubuttonImage[10];
 

protected:

    // binds objects smart pointers to objects created by the runtime
    virtual HRESulT Bindobjects()
    {   
        HRESulT retcode=S_OK;
           
  char buttonname[17];
  TCHAR   lpszfile[34];
           
        if (Failed(retcode=root->Findname(L"LayoutRoot",&LayoutRoot)))
            return retcode;
             
  for(int i=0;i<10;i++)
  {
   sprintf(buttonname,"button%d",i);
   int   nLen   =   strlen(buttonname)   +   1;
   int   nwLen   =   MultiBytetoWIDeChar(CP_ACP,   0,   buttonname,   nLen,   NulL,   0);
   MultiBytetoWIDeChar(CP_ACP,   lpszfile,   nwLen);
   //if (Failed(retcode=root->Findname(L"button0",&Menubutton[0])))
   if (Failed(retcode=root->Findname(lpszfile,&Menubutton[i])))
   return retcode;
  }

  for(int i=0;i<10;i++)
  {
   sprintf(buttonname,"buttonPushImage%d",   nwLen);
   /*if (Failed(retcode=root->Findname(L"buttonPushImage0",&MenubuttonImage[0]))) */
   if (Failed(retcode=root->Findname(lpszfile,&MenubuttonImage[i])))
   return retcode;
  }
   
        return retcode;
    }
   
    // binds event handlers to template class member functions  
    // should be called after Bindobjects
    virtual HRESulT BindEventHandlers()
    {
        HRESulT retcode;
  
        IXRDelegate<XRMousebuttonEventArgs>* OnClickDelegate[10];
  for(int i=0;i<10;i++)
  {
   retcode=CreateDelegate<X,XRMousebuttonEventArgs>((X*)this,&X::OnClick,&OnClickDelegate[i]);
   if (Failed(retcode))       
     return retcode;
   if (Failed(retcode=Menubutton[i]->AddMouseleftbuttonDownEventHandler(OnClickDelegate[i])))
    return retcode;
  }
       
  IXRDelegate<XRMousebuttonEventArgs>* OffClickDelegate[10];
  for(int i=0;i<10;i++)
  {
   retcode=CreateDelegate<X,&X::OffClick,&OffClickDelegate[i]);
   if (Failed(retcode))       
     return retcode;
   if (Failed(retcode=Menubutton[i]->AddMouseleftbuttonUpEventHandler(OffClickDelegate[i])))
    return retcode;
  }
       
        return retcode;
    }
  };

     
// Base class for user control
template <class A,class B>
class PageUserControlRegister : public XRCustomUserControlimpl<A,B>,public TPage<A,XAML2CPPUserControl>
{
protected:

  static HINSTANCE hInstance;
 
public:

  static HRESulT GetXamlSource(XRXamlSource* pXamlSource)
  {
    pXamlSource->SetResource(hInstance,TEXT("XAML"),IDR_XAML_Page);
    return S_OK;
  }
 
  static HRESulT Register()
  {
    return XRCustomUserControlimpl<A,B>::Register(__uuIDof(B),L"Page",L"clr-namespace:Pagenamespace");
  }
 
  static HRESulT RegisterUserControl(HINSTANCE hInstance)
  {
    PageUserControlRegister::hInstance=hInstance;
    return PageUserControlRegister<A,B>::Register();
  }
 
  virtual HRESulT OnLoaded(__in IXRDependencyObject* pRoot)
  {
      HRESulT retcode;
      IXRApplicationPtr app;
     
      if (Failed(retcode=GetXRApplicationInstance(&app)))
          return retcode;
     
      return ((A*)this)->Init(pRoot,hInstance,app);
  } 
};
     
#endif //Page_TEMPLATE_header_file_H
================================================================

Vtalk_MAIN.cpp


class VTalkPage : public TPage<VTalkPage>
{
private:
 IXRBitmAPImagePtr img01;
 IXRBitmAPImagePtr img02;
 CMp3WaveIn *mp3_pIn;
 CMyWaveIn *m_pIn;
 csoundBase *mySound_pIn;
 CMp3Decthread *m_test;

public:
 VTalkPage()
 {
  // Todo: Add extra initialization here
  mySound_pIn = csoundBase::GetInstance();
 }
 virtual HRESulT Init(HINSTANCE hinstance,IXRApplication* app)
 {
  HRESulT retcode;
  
  if (Failed(retcode=TPage<VTalkPage>::Init(hinstance,app)))
   return retcode;
  
  if (Failed(retcode=app->CreateObject(IID_IXRBitmAPImage,&img01)))
   return retcode;

  if (Failed(retcode=app->CreateObject(IID_IXRBitmAPImage,&img02)))
   return retcode;
  
  if (Failed(retcode=img01->SetUriSource(TEXT("//NandFlash//按下白底.png"))))
   return retcode;

  if (Failed(retcode=img02->SetUriSource(TEXT("//NandFlash//img02.jpg"))))
   return retcode;

  
  return S_OK;
 }


 HRESulT OnClick(IXRDependencyObject* source,XRMousebuttonEventArgs* args)
 { 
  HRESulT retcode;
  int i;
  IXRImageBrushPtr  pMyBlueBrush;
  IXRCanvasPtr pTmpCanvas;

  IXRApplicationPtr app;

  if (Failed(retcode=GetXRApplicationInstance(&app)))
   return retcode;

  if (Failed(retcode=app->CreateObject(IID_IXRImageBrush,&pMyBlueBrush)))
   return retcode;

  pMyBlueBrush->SetimageSource(img01);
  pTmpCanvas = (IXRCanvasPtr)source;

  for(i=0;i<10;i++)
  {
   if(pTmpCanvas==Menubutton[i])
   {
    MenubuttonImage[i]->SetFill(pMyBlueBrush);
    break;
   }
  }

  if(pTmpCanvas==Menubutton[0])//通话-开录音
  {
   m_pIn = new CMyWaveIn();
   if (!m_pIn->StartRec ())
   {

   }
  }
  else if(pTmpCanvas==Menubutton[1]) //监视-关录音
  {
   if (!m_pIn->StopRec())
   {
   
   }
   delete m_pIn;
  }
  else if(pTmpCanvas==Menubutton[2])//信息中心-开MP3录音
  {
   mp3_pIn = new CMp3WaveIn();
   if (!mp3_pIn->StartRec ())
   {

   }
  }
  else if(pTmpCanvas==Menubutton[3]) //安防-关MP3录音
  {
   if (!mp3_pIn->StopRec())
   {
   
   }
   delete mp3_pIn;
  }
  else if(pTmpCanvas==Menubutton[5]) //浏览器-录音
  {
   // Todo: Add your control notification handler code here
   WAVEFORMAT_SETTING waveFormat;
   waveFormat.bits = BITS_16;
   waveFormat.channel = CHANNEL_SINGLE;
   waveFormat.samples = SAMPLES_32000;//SAMPLES_44100;//
   if(mySound_pIn->Record(TEXT("//nandflash//waveTest.wav"),&waveFormat) == FALSE)
   {

   }
  }
  else if(pTmpCanvas==Menubutton[6]) //数码相框-关录音
  {
   // Todo: Add your control notification handler code here
   mySound_pIn->StopAll();
   delete mySound_pIn;
   
  }
  else if(pTmpCanvas==Menubutton[7]) //我的助理
  {
   m_test = new CMp3Decthread();
   m_test->SetURLfile(_T("//nandflash//wave32.mp3"));
  }
  else if(pTmpCanvas==Menubutton[8])
  {
   delete m_test;
  }
  else if(pTmpCanvas==Menubutton[9])
  {
   vhost->EndDialog(0);
   return S_OK;
  }

  pMyBlueBrush->Release();
  //MessageBox(NulL,TEXT("Click!"),TEXT("Silverlight for Embedded test"),MB_OK);
  return S_OK;
 }

 
 HRESulT OffClick(IXRDependencyObject* source,XRMousebuttonEventArgs* args)
 { 
  HRESulT retcode;
  IXRImageBrushPtr  pMyBlueBrush;
  IXRCanvasPtr pTmpCanvas;
  IXRApplicationPtr app;

  if (Failed(retcode=GetXRApplicationInstance(&app)))
   return retcode;

  if (Failed(retcode=app->CreateObject(IID_IXRImageBrush,&pMyBlueBrush)))
   return retcode;

  pMyBlueBrush->SetimageSource(NulL);
  pTmpCanvas = (IXRCanvasPtr)source;
  for(int i=0;i<10;i++)
  {
   if(pTmpCanvas==Menubutton[i]){
    MenubuttonImage[i]->SetFill(pMyBlueBrush);
    break;
   }
  }
  pMyBlueBrush->Release();

  return S_OK;
 }

 HRESulT ExitOnClick(IXRDependencyObject* source,XRMousebuttonEventArgs* args)
 { 
  this->vhost->EndDialog(0);
  return S_OK;
 }

 HRESulT PopOnClick(IXRDependencyObject* source,XRMousebuttonEventArgs* args)
 { 
   return S_OK;
 }
};

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR     lpCmdline,
                     int       nCmdshow)
{
 if (!XamlRuntimeInitialize())
   return -1;

 HRESulT retcode;

 IXRApplicationPtr app;
   
    if (Failed(retcode=GetXRApplicationInstance(&app)))
        return -1;

 VTalkPage vtalkPage;
 if (Failed(vtalkPage.Init(hInstance,app)))
  return -1;

 UINT exitcode;
 if (Failed(vtalkPage.GetVisualHost()->StartDialog(&exitcode)))
  return -1;

    return 0;
}


绑定事件等等。

以上只是一个测试程序,多有不足,见谅。

 

4.善用XAML2CPP.exe 生成其他的class;其他就是vc++编程序了。

总结

以上是内存溢出为你收集整理的wince R3 silverlight编程概要全部内容,希望文章能够帮你解决wince R3 silverlight编程概要所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1025255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存