====================
现在真想去看看IXRApplication对象的SDK:
PAGE:
http://msdn.microsoft.com/en-us/library/ee504072.aspx
强烈建议去看看,
心得:
突然联想到:SL 当中有一个资源的概念,我们一般将资源写在单独的资源文件当中,
那SWE其对于资源文件是怎么样来处理的。SWE 其将这个任务交给我们的大管家IXRApplication来管理,
那IXRApplication其是怎么样管理的呢. 其是创建一个资源部门,具体细节由 resource manager来管理,
IXRApplication其只是负责处理 资源部门的高层决策,其所包括哪些:
IXRApplication::LoadResourceDictionary
我将其放置在第一的位置,说明其很重要,其能够帮我们解决加载资源文件与解析文件,
如使用BLEND 2 创建一个工程,其包括两个文件: Application.xaml,page.xaml.
Application.xaml 其包括全局资源的定义. 对于其的解析我们只能使用LoadResourceDictionary, 而不能通过使用
ParseXaml ,(小插曲:使用XAML2CPP.EXE 其不能够单独解析app.xaml)
疑问:
ParseXaml 其解析的结果是 element tree; LoadResourceDictionary 其解析的结果是什么呢,其是独立对象
(dependency object), dependency object 是怎么样影响element的呢.
问1:APP.XAML 与PAGE.XAML 之间关系是什么呢; 其是服务关系,APP.XAML定义资源与提供资源,
PAGE.XAML
当中UI ELEMENT 通过{StaticResource } 来使用,==》在解析的流程上,应该先解析App.xaml,然后才是
PAGE.XAML.
问2:如果资源是定义在PAGE.XAML当中,我们是否可以直接地使用ParseXaml,而不要使
LoadResourceDictionary.
问3:如果资源文件不只是APP.XAML这一个,其有多个资源文件,那么我们怎么样办.
首先可以确定的是:
解析资源文件其应该使用 LoadResourceDictionary,
==》是否是有多少资源文件,其要求调用多少次LoadResourceDictionary
(小插曲:virtual HRESULT STDMETHODCALLTYPE LoadResourceDictionary(
XRXamlSource * pSource,
IXRResourceDictionary **ppDictionary)=0;
由于LoadResourceDictionary的XRXamlSource *pSource 所想到的一个问题:
LoadResourceDictionary 其是加载资源,其为什么不直接使用文件名,而要使用XRXamlSource struct 呢,
查看XRXamlSource struct 的定义来明白过来,资源有许多种类,其使用这个结构可以采用统一的形式来使用,
这就像COM对于变量的各种数据类型(int ,char,...) 采用统一的结构来描述。
值得我们学习使用
)
)
资源其是解析成DEPENDENCY OBJECT, 其是怎么样影响到VISUAL TREE,这是属于各个部门的联合行动,其是要
通过大管家来亲自操作。
当XAML当中有IMAGE (而其重点不是IMAGE控件)的时候,其的图片文件是静态加载还是动态加载的呢
SWE的大管家对于IMAGE这个职员怎么样处理呢,
IMAGE的特殊性:
其加载的图片格式是多种的.
其图片资源也可以制作成DLL,或EXE形式.
用户可以从local file(IXRApplication::LoadImageFromFile), binary Resource
(IXRApplication::LoadImageFromResource) 加载图片,然后创建一个IBitmapImage object.
这个IBitmapImage object 其是由 Resource manager来管理
==>当用户对于SWE有什么需求,SWE的大管家IXRApplication其是会自己做一部分,然后交给各个相关部门经理
来完成.
SWE 的大管家IXRApplication其还管理用户自定义控件的相关信息的注册。“注册”说明了IXRApplication其内部有
一张表。这也从IXRApplication::RegisterResourceManager也可以证实.
IXRApplication 其能够为所在线程其提供消息处理,其具体是什么,其的流程是什么呢.
IXRApplication::StartProcessing
IXRApplication::StopProcessing
究竟什么才是访问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
====================