文件浏览问题之三
时间:14:09 2010-8-28
环境:
开发环境:VS2008 +XAML2CPP.EXE + SWE 2 + BLEND 2
运行环境:WINCE 6.0 R3
硬件加速: DirectX
UI 其只是外围,其只是显示很信息.==>UI 其只能做自己最能做的事情。为别人留一点生存空间,也让自己多享受一下生活。
在处理字符串的时候,遇到
char *pAnsiString = new char[nSize+1] 的问题。其是要由谁来DELETE.
在这里我们可以使用std::string ,或者是CString 来管理.
std::string ,CString 其所产生的原因:
1. 解决 new ,delete的经典问题
2. 方便字符串的操作
今天才算初步认识string。希望今后对其有更多的好感。
问题:
明明创建了N 个控件,但实际显示的数目小于N, 其有可能这个N控件的Name 属性相同。
SWE将Name相同的控件当作同一个控件处理,所以出现这样的结果。
解法:将Name设置不相同就可以了。
问题:
很路径path = \*.*, 为什么找不到 临时文件夹呢(如NAND FLASH ,NETWORK)
但指定路径,其能够找到.
==> 原因路径还是写错了,写成了path=\\*.*
先做一个完整文件浏览器。然后再添加过滤的功能。
现在要完善:
1. Card ==> 类型的特点
2. 将存放Card的网格,写成一个自定义控件
时间:10:03 2010-8-30
问题:
将一个网格控件写成一个自定义控件,我们将遇到哪些问题呢。分析流程然后在思考其的编写过程。
此网格控件要EXPOSE 哪些接口呢。
用户其只是关心其能够显示元素,而不关心其具体是怎么样来显示元素的。==> EXPOSE 增加元素的接口,其就可以了。
自定义控件的相关类定义成TEMPLATE
在此处失败的原因:
if (FAILED(retcode=app->CreateHostFromXaml(&xamlsrc, &wp, &vhost)))
return retcode;
出错代码:
-2142830490
解法:
其是关于XAML文件的错误,采用排除法,在我的项目当中是:因为添加了自定义控件而引进的错误,我删除此控件,然后又重写了一个控件。
其出错的原因:
static HRESULT Register()
{
return XRCustomUserControlImpl<A,B>::Register(__uuidof(B), L"Browser", L"clrnamespace:ImageBrowserPro");
}
对于Register的设置,其是根据其的UserControl 的x:Class来进行的设置
<UserControl x:Class="ImageBrowserPro.Browser" />
-2142830380
此出错代码是因为
if (FAILED(retcode=root->FindName(L"MyGridControl",&MyGridControl)))
return retcode;
有关的。没有找到此UI ELEMENT.
突想:
SWE其所提供的UI与LOGIC 分离是一种什么样形式呢,特别对于DEVELOPER来而讲,又特别对于之前使用MFC开发人员而讲,其的优势在哪里呢.
DEVELOPER其还是要关注UI,但其不要关注UI具体长得什么样,其只要知道有这样一个东西就可以。
问题:
遇到了创建多个自定义控件,但其只是显示一个。
解法:
在我的项目当中:因为所创建的自定义控件的NAME 均是一样的( 自定义控件的X:NAME="XXX",且自已在创建的时候,也没有使用SetName 设置),所以我们只要将NAME设置为不同就可以。
最为简单: 将XAML当中的X:NAME 删除。
做事要有前瞻性。
问题:
复制一个项目文件,打开备份的,能编译通过但出现不能调试的情况。
解法:
重新生成解决方案
SetContent 模型:
Content Control 其是一个载体。其是用于显示其它内容的。
哪些是Content Control
IXRButtonBase
IXRButton
IXRRepeatButton
IXRToggleButton
IXRListBoxItem
IXRComboBoxItem
IXRScrollViewer
IXRToopTip
视图层已经了解了,接下来的问题是:流程的编写,流程的管理与控件,流程的复用
在模式当中,我们一般会是使用Dependency injection (DI) pattern.
类似工厂函数之类的写法是值得学习的