zoukankan      html  css  js  c++  java
  • 对于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.


     

  • 相关阅读:
    KooTeam
    nopCommerce架构分析系列(一)nopCommerce简介
    NServiceBus最流行的开源企业服务总线 for .Net资源学习篇
    How to become a software architect?
    DotNetMQ: A Complete Message Queue System for .NET
    CSLA.Net专注电子商务 – Focus on eCommerce
    .net framework从1.0说到4.0
    ERP/SCM
    泛型接口的协变和逆变
    HTML5学习
  • 原文地址:https://www.cnblogs.com/pengxinglove/p/1796017.html
Copyright © 2011-2022 走看看