sliverlight for embedded

// SmartComDlg.cpp : 实现文件

//

 

#include "stdafx.h"

#include "SmartCom.h"

#include "SmartComDlg.h"

 

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

 

/******************************************/

//COM RETURN

HRESULT hRe;

 

//Silverlight全局

IXRApplicationPtr slApp;

IXRVisualHostPtr slVisualHost;

 

//Silverlight控件

IXREllipsePtr   slTXLedObj; //tx

IXREllipsePtr   slRXLedObj; //rx

IXRTextBlockPtr slTime; //time

 

//Silverlight DOM

 

IXRFrameworkElementPtr slroot;

IXRFrameworkElementPtr slcanvas;

 

//tx,rx LED指示灯

IXRLinearGradientBrushPtr slflashBrush;

IXRLinearGradientBrushPtr sltxBrush;

IXRLinearGradientBrushPtr slrxBrush;

 

//资源

IXRResourceDictionaryPtr resource;

 

//事件委托

IXRDelegate<XRMouseButtonEventArgs>* txDelegate;

IXRDelegate<XRMouseButtonEventArgs>* rxDelegate;

 

/*******************************************/

 

 

/********************事件处理************************/

class SilverlightEventHandle  

{  

public:  

  HRESULT OnExit(IXRDependencyObject* source,XRMouseButtonEventArgs* args)  

    {  

        ExitProcess(0);

        return S_OK;  

    }  

HRESULT OnTxClick(IXRDependencyObject* source,XRMouseButtonEventArgs* args)  

    {  

        return S_OK;  

    }  

HRESULT OnRxClick(IXRDependencyObject* source,XRMouseButtonEventArgs* args)  

    {  

        return S_OK;  

    }  

};

 

事件变量

SilverlightEventHandle slEventHandle;

 

 

HRESULT FindControl(IXRFrameworkElementPtr p,const WCHAR* name,IXRDependencyObject** found)

{

return p->FindName(name,found);

}

 

 

/****************************************************/

BOOL CSmartComDlg::InitSilverlight(wchar_t* FileName)

{

if(!XamlRuntimeInitialize())

{

ShowMessage(_T("XamlRuntimeInitialize失败"));

return FALSE;

}

if(FAILED(hRe=GetXRApplicationInstance(&slApp)))

{

ShowMessage(_T("GetXRApplicationInstance失败"));

return FALSE;

}

 

XRWindowCreateParams wcp;

ZeroMemory(&wcp,sizeof(wcp));

wcp.Width=800;

wcp.Height=40;

//wcp.ExStyle=WS_EX_CAPTIONOKBTN;

//wcp.Style=WS_OVERLAPPED;

//wcp.ExStyle=WS_EX_OVERLAPPEDWINDOW;

wcp.Style=WS_CHILD|WS_VISIBLE;

wcp.pTitle=_T("");

wcp.ParentWindow=this->m_hWnd;

XRXamlSource xmlFile;

xmlFile.SetFile(FileName);

 

if(FAILED(hRe=slApp->CreateHostFromXaml(&xmlFile,&wcp,&slVisualHost)))

{

ShowMessage(_T("CreateHostFromXaml失败"));

return FALSE;

}

hRe=slVisualHost->GetRootElement(&slroot);

hRe=slroot->FindName(L"BackGround",&slcanvas);

return TRUE;

}

BOOL CSmartComDlg::InitControl()

{

 

IXRFrameworkElementPtr grid;

hRe=slcanvas->FindName(L"TXLed",&grid);

hRe=grid->FindName(L"TXLedObj",&slTXLedObj);

hRe=slcanvas->FindName(L"RXLed",&grid);

hRe=grid->FindName(L"RXLedObj",&slRXLedObj);

hRe=slcanvas->FindName(L"LbTime",&slTime);

return TRUE;

}

BOOL CSmartComDlg::InitEvent()

{

 

 

hRe=CreateDelegate(&slEventHandle,&SilverlightEventHandle::OnRxClick,&rxDelegate);

hRe=CreateDelegate(&slEventHandle,&SilverlightEventHandle::OnTxClick,&txDelegate);

hRe=slTXLedObj->AddMouseLeftButtonDownEventHandler(txDelegate);

hRe=slRXLedObj->AddMouseLeftButtonDownEventHandler(rxDelegate);

return TRUE;

}

BOOL CSmartComDlg::LoadSilverLightResource()

{

hRe=slroot->GetResources(&resource);

hRe=resource->GetItem(L"RxLedBrush",&slrxBrush);

hRe=resource->GetItem(L"TxLedBrush",&sltxBrush);

hRe=resource->GetItem(L"FlashLEDBrush",&slflashBrush);

return TRUE;

}

// CSmartComDlg 对话框

 

CSmartComDlg::CSmartComDlg(CWnd* pParent /*=NULL*/)

: CDialog(CSmartComDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

 

void CSmartComDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(CSmartComDlg, CDialog)

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)

ON_WM_SIZE()

#endif

//}}AFX_MSG_MAP

ON_WM_TIMER()

END_MESSAGE_MAP()

 

 

// CSmartComDlg 消息处理程序

 

 

UINT_PTR timer;

BOOL CSmartComDlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

//设置大小

MoveWindow(0,0,800,40);

::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE);

SetIcon(m_hIcon, TRUE); // 设置大图标

SetIcon(m_hIcon, FALSE); // 设置小图标

 

 

 

//初始化Silverlight环境

if(!this->InitSilverlight(L"//Storage card//SmartComHeader.xaml"))

{

ExitProcess(0);

}

//初始化控件

this->InitControl();

this->LoadSilverLightResource();

this->InitEvent();

 

hRe=slVisualHost->ShowWindow();

 

timer=SetTimer(100,1000,NULL);

 

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

 

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)

void CSmartComDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)

{

if (AfxIsDRAEnabled())

{

DRA::RelayoutDialog(

AfxGetResourceHandle(), 

this->m_hWnd, 

DRA::GetDisplayMode() != DRA::Portrait ? 

MAKEINTRESOURCE(IDD_SMARTCOM_DIALOG_WIDE) : 

MAKEINTRESOURCE(IDD_SMARTCOM_DIALOG));

}

}

#endif

 

int tx=0,rx=0;

void CSmartComDlg::OnTimer(UINT_PTR nIDEvent)

{

 

if(rx==0)

{

slRXLedObj->SetFill(slflashBrush);

rx=1;

}

else

{

slRXLedObj->SetFill(slrxBrush);

rx=0;

}

 

if(tx==0)

{

slTXLedObj->SetFill(slflashBrush);

tx=1;

}

else

{

slTXLedObj->SetFill(sltxBrush);

tx=0;

}

// }

//}/*else if(nIDEvent==3)

// {

// IXRInlineCollectionPtr  inlinetxt;

// hRe=app->CreateObject(IID_IXRCollection,&inlinetxt);

// IXRRunPtr  date;

// IXRRunPtr  time;

// hRe=app->CreateObject(IID_IXRRun,&date);

// hRe=app->CreateObject(IID_IXRRun,&time);

 

SYSTEMTIME systime;

GetSystemTime(&systime);

WCHAR wcdate[32]={0};

WCHAR wctime[32]={0};

wsprintf(wcdate,L"%d-%d-%d  %d:%d:%d",systime.wYear,systime.wMonth,systime.wDay,systime.wHour,systime.wMinute,systime.wSecond);

//wsprintf(wctime,L"",);

// hRe=date->SetText(wcdate);

// hRe=time->SetText(wctime);

// int index=0;

// hRe=inlinetxt->Add(date,&index);

// hRe=inlinetxt->Add(time,&index);

slTime->SetText(wcdate);

// lbTime->SetInlines(inlinetxt);

 

 

CDialog::OnTimer(nIDEvent);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值