时间: 9:12 2010-8-24
背景:
昨天已经完成图片浏览器的界面的制件部分,按计划今天要完成后台设计.
原则:
在使用SWE的过程考虑,其是怎么样实现 BITBLT的功能,又是怎么样方便用户的使用.
难点:
之前使用bitblt方法实现,所以业务逻辑那一块没有什么难点,难点主要还是在于对于SWE 框架的不熟
悉,现在已经熟悉了单个XAML文件的框架写法,但对于一个软件当中有多个XAML文件的时候,怎么样来处理之
间的逻辑关系,现主要表现:流程,数据的交换,与: 多个XAML显示。
想法:
利用加层来解耦的原则,使用MVP/C 的思想,流程的控件由另外一个类来进行管理,那多个XAML其是
怎么样显示的呢,这是MS 的SWE 开发人员所以思考解决的问题,其会提供一些什么的工具,以方便我们的开发
呢。
我想:如果每一个XAML其是一个VISUAL HOST(也是一个XAML对应一个窗口),那么每一个XAML之间
通信,其要使用API:SendMessage, the developer of the SWE 其会这样处理吗,其支持这种方案,但我认识这太
低级了,且很麻烦,没有体现SWE的优点。
如果我们将每一个XAML当作一个控件(<UserControl>),那么对于控件怎么样管理呢。具体表现为:控
件创建,增加,删除,控件之间的Workflow,这应该是最重要的,也是难点。
在一个软件当中,将其中一个XAML文件解析一个VISUAL HOST, 其它XAML 通过 VISUAL TREE,然后
作为添加到VISUAL HOST当中。SWE 的开发人员其提供了:XRCustomUserControlImpl<a,b> 来完成这个任务。 这
些任务是由一个类负责管理。
实现假想:
MVC的思想,CONTROL 其通过依赖注入得到 MainPage(mainpage.xaml 解析成Visual host)对象的引用
,然后CONTROL 通过MainPage 的引用来操作控件Workflow。
寻找实现方案:
通过重新思考SWE的开发流程与对于XAML2CPP.EXE所写框架的反思,
现在SL 当中,其的C#代码,其既有UI事件处理代码,也有自定义事件代码。
class Control : public IControl
{
protected:
MainPage *page;
public:
Control(MainPage *page)
{
this->page = page;
// page 成员的初始化
}
public :
void Initialize()
{
}
}
对于SWE当中的委托机制,一定要认真的学习与思考
new与CreateObject 其之间是没有什么区别的。
下一个软件,其要把界面制作,业务逻辑,控制, 分析清楚了,然后再来处理具体组织与实现关系。
错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面)
现在遇到了C++ 的头文件相互包含的经典问题,( A 包含B ,B包含C,C包含A)
时间: 9:12 2010-8-25
在我的项目当中出现头文件相互包含的原因: 我将类的定义与实现均写在一个文件当中。
解法:将类的定义与实现分别写在两个文件当中。
在头文件当中,当A头文件当中包含B文件类的指针与引用的时候,在A头文件当中写一个类向前引用(CLASS B )
就可以了,没有必要写一个#include "B.h",而将#include "B.h" 写在A.CPP当中。
什么情况:向前引用就可以了。
什么情况:需要使用#include
/////////////////////////
PAGE:
http://hi.baidu.com/shilyx/blog/item/c1e3f7f277e29811b17ec5f2.html
三、两点原则
头文件包含其实是一想很烦琐的工作,不但我们看着累,编译器编译的时候也很累,再加上头文件中常常出现
的宏定义。感觉各种宏定义的展开是非常耗时间的,远不如自定义函数来得速度。我仅就不同头文件、源文件间
的句则结构问题提出两点原则,仅供参考:
第一个原则应该是,如果可以不包含头文件,那就不要包含了。这时候前置声明可以解决问题。如果使用的仅仅
是一个类的指针,没有使用这个类的具体对象(非指针),也没有访问到类的具体成员,那么前置声明就可以了
。因为指针这一数据类型的大小是特定的,编译器可以获知。
第二个原则应该是,尽量在CPP文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针
,在类A的头文件中使用了类B的前置声明并便宜成功,那么在A的实现中我们需要访问B的具体成员,因此需要包
含头文件,那么我们应该在类A的实现部分(CPP文件)包含类B的头文件而非声明部分(H文件)。
//////////////////////////////////
看来在C++ 当中,还接受将类的定义与实现分开的规则吧,以免得麻烦。
现在问题:
怎么样查找文件,怎么样去保存文件与目录的路径,怎么样去得到这些数据
WINCE R3 当中,
对于使用CString , std::wstring ,TCHAR 之间的问题
本人之前,一直使用MFC开发,且一直认为CString 其是与MFC绑定了。
原因不是这样的呀,
CString 其是属于 ATL.
还有一个误认为的: 认为WINCE R3 上的WIN32的开发:pure c++ And api
其实我们可以使用ATL, pure c++ and api, 对于模板容器的使用:ATL 与STL。
应该怎么样选择呢.
好久没有看到使用CString ,心里一阵惊喜,看到老朋友了,但后来想问一句:老朋友,你不是在MFC当中,怎么也
跑到WIN32当中了呢。
==》 在使用容器的时候,要选择哪一种容器版本呢.是STL 还是ATL
其实没有必要纠结,能够使用就使用呀,不要把什么东西(人,技术,书...)神化了(发现现在社会很喜欢造神),自己
应该端正态度,这些东西都是用我们服务的,而不应该反过来。
一个类其只是负责处理一个任务,
错误 1 error C2871: “std”: 具有该名称的命名空间不存在
我遇到的情形:
std::string str;
但没有#include <string>
C++ 方法当中的字符串形参的书写,感受:
const char *
char *
当只是要传入且不修改,最好使用const char *, 因为string.c_str() 其是返回 const char *
当前我的环境有什么资源使用,我们就要完全利用起来,
对于工作人的定义:应该是善于利用环境当中所提供的资源,来完成任务。
时间:14:58 2010-8-26
问题:
1.对于TextBlock的foreground 设置红色,为什么在使用SetText之后变成了黑色呢.(求解)
2. 当向网格(GRID)当中添加元素的时候,元素之前紧靠在一起,通过什么附加属性来使用其之间有空间.
==> 使用 控件的SetMargin 方法
3. 同2. 且zindex 其的值是多少呢
4. 代码的书写风格很乱,变量命,方法,类的命名也很乱,=>尽量不要写注释,要让代码自解释,都向MSDN学
习其是怎么样定义的。
-2142830490
5. 向GRID当中动态的添加几个元素,但其只是显示一个元素, 我将创建自定义控件改成BUTTON,其就能够成功显
示出相应数目的BUTTON.
==》实在没有方法了,重新做一个新的控件,成功了,
通过对着分析:
<UserControl
x:Name ="xxx"/>
<UserControl
/>
其两者是有很大的差别的呀
添加几个元素,但其只是显示一个元素 ==>其是与x:Name 有关
自定义控件有关错误:
自定义控件其定义在PAGE.XAML当中,自定义控件的注册
自定义控件(如Card) 其的XAML文件当中有这样一行:
x:Class="ImageBrowserPro.card"
那么在下面方法当中,要写成下列的形式
static HRESULT Register()
{
return XRCustomUserControlImpl<A,B>::Register(__uuidof(B), L"card", L"clr-namespace:ImageBrowserPro");
}