对于SWE发问__框架结构

时间:20:18 2010-8-9
网址:http://msdn.microsoft.com/en-us/library/ee503558.aspx

背景:完成了项目的界面的制作,思考怎么样使用SWE来软件动起来.

1.SILVERLIGHT 其本身的特点。其在后台语言的使用上,其是怎么样适合C#,与C++的呢.
其又是怎么样与WIN32框架相结合的,
如WIN32 其有窗口类注册,窗口类初始化,窗口过程。

这些是属性UI 部分,其应该被SWE所接管,
但SWE其是管理的呢,其提供了后门以方便我们也能够管理这些(类似于MFC封装WIN32)

如用户信息,消息处理过程,应用程序其是怎么样接受到用户消息,系统消息.

key:SWE 其是怎么样来建立框架的,其的思路是什么。

对于现在SWE的框架结构不是很满意,要写的重复的代码太多,还希望哪位高人能够使用 设计模式加模板来写一个

framework

使用SWE为CE写一个APP,其的流程是什么,其的设计思路是什么呢。

UI FRAMEWORK 与WIN32的结合.

都多XAML文件其是怎么样结合起来的呢.

工作流程:

step one :
Create the xaml file that defines the ui

step two:
创建工程(CREATE A SUBPROJECT)

step three:
USE THE SILVERLIGHT C++ API TO INITIALIZE SIVERLIGHT

step four:
Parse the xaml file into an object tree

step five:
add event handlers to the parsed elements

现在有一个问题 发现STEP THREE,
原因创建一个UI ,考虑到UI REUSER,使用了多个XAML文件,那我们在STEP THREE 当中,怎么样使用

SILVERLIGHT C++ API(思考:完成任务的API,其是SWE的API) TO INITIALIZE SILVERLIGHT.
从而达到STEP FOUR: CREATE A VISUAL TREE.

现在的问题:对于SWE API 与框架的问题

MSND 上WORKFLOW,
(说明:为什么一定要掌握其的工作源程,因为做什么事情首先因为从大局入手,如其是什么,有什么用,怎么样

使用,KEY:其使用产生的背景)

STEP 1 : ADD SILVERLIGHT TO  YOUR OS DESIGN.
其说明:SWE 其是不是默认可以使用的。

STEP 2: CREATE A SUBPROJECT FOR YOUR APPLICATION
define the ui in sl 2 xaml instead of c++ (  其说明创建UI,不要我们使用C++创建,而是由SL 自行创建,
这是SWE 的好处,想想之前我们的工作流程: 美工创建好图片,我们还要使用CODE TO RENDERING,
然后才是事件处理(业务逻辑)
现在我们只要直接处理业务逻辑就可以,前面二步由SL 来完成)

COPY THE EXISTING XAML FILE(S) TO YOUR SUBPROJECT.
上面XAML FILE(S), 这个复数形式其说明一个工程其是允许使用多个XAML文件,
XAML FILE(S), 这些文件之间的关系是什么,如:是否是允许有多个USERCONTROL 的XAML文件,
还是只有一个(必需要一个USERCONTROL 文件吗),其余都是资源文件(请思考:什么是资源,其在XAML当中怎么

样表达,其又是怎么样添加到程序当中的。
故事板,视感状态,动画,其均是资源,因为其定义在
<XXX.Resources>
 各种资源的定义 
</XXX.Resources>
在APP.XAML其的形式是
<Application
 xmlns="xx" >
 <Application.Resources>
  各种资源的定义
 </Application.Resources>
</Applicaiton>

在page.xaml当中
<UserControl
 xmlns="xx">
 <UserControl.Resources>
 </UserControl.Resources>
 
 <Grid>
 </Grid>
</UserControl>
其除了资源就是UI 定义
)

对于这些XAML FILE(S) ,MS 的SL 工程师其是处理的,以便共同完成一个UI(或者多个UI)界面。

Step 3 Create an Object that has Event handlers
为交互性(interactive)UI  ELEMENTS(不管其是在XAML当中定义的还是使用C++代码动态创建的)创建事件处理代

码。

我们要创建一个类,类当中包括事件代码。UI ELEMENTS 与此类其是通过DELEGATE来建立联系。
其应该是采用观察者模式(OBSERVER PATTERN)实现的。
注意:我们既然建立一个类,我们应该考虑怎么样更好的REUSER此类,这一点可以学习JAVA swing。
思考:在其的工作流程当中,为什么对象树其还没有创建,其就考虑为INTERACTIVE UI ELEMENTS  提供

EVENT HANDLER CODE。

其的用意在哪里,其有什么好处呢.

Step 4 Prepare the silverlight visual tree.
问1:其为什么使用Prepare,而不使用CREATE
问2: 准备分为几个部分,每一个部分要完成什么样的完成任务,随便思考一下:其为什么要分为这几个部分,为

什么其每一个部分要完成这些任务,其是否是必需的,如果不是,哪些步骤是可以加或减,其是怎么样考虑

时间:9:03 2010-8-10
关键词: 使用Silverlight的目标是什么呢,其就是为了显示APPLICATION UI,
怎么样完成这个任务?
1.使用SILVERLIGHT 在APPLICATION当中运行。
2.使用SL C++ API 分析XAML文件(如果有多个相关的XAML文件,那其怎么样设置)

具体而言:
initialize the system, ==> 目的是什么,其用来加载SWE,
load the source XAML FILE, ==> 其为什么不使用复数形式呢,难道一个APPLICATION UI 必需全部放置在一个

XAML FILE 当中吗, 这应该不可能.
generate an object tree, ==> 1.其目标是为了访问结点。此叶子结点能否添加动态添加用户控件呢

Being routing and processing messages for the application
问1:Routing 说明了许多的事情:消息循环得到消息==》消息处理过程==》SL C++ FRAMEWORK 在对象树当中

遍历,以便确定对象.
问2: 怎么样自定义消息,怎么样来接管SL的消息处理过程==》我们为什么这样做呢,难道SWE 此框架没有支

持这一点吗,==》SWE其封装的目标是什么呢?
SWE 对于XAML 以C++ 来进行实现,然后对于这些C++类以COM的形式来组织.

怎么样用程序代码来表达呢
怎么样来封装这个流程,以便REUSE.

1.添加相关头文件
#include <XamlRuntime.h>
#include <XRDelegate.h>

2.calling XamlRuntimeInitialize(),  ==>   其SWE的库,我们之前使用.H 是为编译,使用.LIB 是连接,而具 

     体代码是在DLL文件当中。
3.calling GetXRApplicationInstance. ==> 其代表一个应用程序实例,其相当于大管家,其主人是谁呢,
      呵呵,当然是我们,所以我们要以大局的角度来看待此问题,首

先掌握其的流程再说。
IXRApplication object to perform application tasks,(说明了几点:1.此对象是管理APPLICATION TASKS;2. 凡是

APPLICATION TASKS,其均要由IXRAPPLICATION OBJECT 来管理调节;3. APPLICATION TASKS 具体包括哪

些呢,
sush as :
1. parsing XAML markup ==> 注意:IXRApplication( I (interface,X(XAML),R(Runtime))其只是设置好资源,至于怎

么样去解析,则是由小管家来完成.
2.Create new objects for the application, 创建什么对象要通过IXRApplication呢==》 IXRApplication其还具有

工厂能力.其创建的对象应该是各个部门的经理吧,呵呵。。

3.Starting the processing of messages。==》难道WIN32的消息循环,与窗口过程在IXRApplication当中,有关

窗口的消息其就发送给 窗口部门经理来负责处理。自定义消息,系统消息(如:WM_TIMER),其交给哪个部门经理

来处理呢,

现在真想去看看IXRApplication对象的SDK:
PAGE:
http://msdn.microsoft.com/en-us/library/ee504072.aspx
强烈建议去看看,

心得在这里

究竟什么才是访问UI ELEMENT.
1.访问一个UI ELEMENT ,
前提是创建了ELEMENT TREE与Visual host,

通过大管理IXRApplication 得到,UI 部门经理IXRVisualHosts(其除了管理UI ELEMENT,其还要负责显示与保持状

态),得到内部对象管理负责人IXRFrameworkElement,
给内部对象管理负责人IXRFrameworkElement提供 name,其通过IXRFrameElement::FindName就可以得到XAML

ELEMENT OBJECT.
此OBJECT 其就代表一个UI ELEMENT 吗,一个UI ELEMENT 其是一个COM对象(com其是一个类的集合),
其两者之间是什么样的关系呢,一个UI ELEMENT 的COM当中包括哪些类呢


when you have found an object ,you can obtain an interface pointer to it by calling IUnknow::QueryInterface
其通过IXRFrameElement::FindName已经找到了元素,且返回了智能指针,
通过调用IUnknow::QueryInterface 其要得到什么东西,其可以得到什么东西.
XAML ELEMENTS 其是IXRDependencyObject,且IXRDependencyObject 其继承IUnknown接口
其说明对于对象的访问,其是要通过IUnknown::QueryInterface
4.


 

原文地址:https://www.cnblogs.com/pengxinglove/p/1796017.html