[手持设备大作业]发现MFC和VC6还是挺好一套东西的

这几天做手持设备的作业,用到了EVC,又重拾起了MFC的那在一套。没想到2年过去了,原本生硬晦涩的Document  / View 现在变得异常的清晰。原来不怎么会用的ClassWizard现在用起来也是得心应手。可惜啊,现在的主攻方向是服务器端JAVA和客户端的Ajax,而两年一过,桌面开发早已城头变幻,全是.NET的天下了。
今天的Presentation看出了我在手持设备、桌面应用等方向和一些人的差距。已经决定从事BS开发的我,这也是必然吧。这条开发之路,当初既然选了,就要好好走下去。当然,.NET的东西也要借鉴,最好是精通J2EE,对.NET也是略知皮毛。
今天解决了EVC里添加CFormView失败的东东,下午装了个VC6,定位了错误,在网上搜一下,很快就出来了。不错不错,可以加油干下去了,不用硬着头皮只用一个View了。明天估计干不了活了,到周五再继续吧。

[存档]浅谈:切换视时基于FormView的对话框属性设置与ASSERT报错的问题

这是在做EVC的作业时碰到的问题,查到的文章,存个档~~~
最近做的项目中用到了FormView切换视图,其主要原理是:先新建一些Dialog对话框,然后给这些对话框绑定对应的View,注意:这些View要基于FormView。
一开始还好好的,利用切换视的代码进行的很顺利(网上的相关代码很多,我就不赘述了),但是,后来新加了两个Dialog,不知我怎么弄的,奇怪的事发生了:先前添加了Dialog都能正常的切换,但是,一切换新添加的Dialog,每次运行到:
BOOL CFormView::Create(LPCTSTR /*lpszClassName*/, LPCTSTR /*lpszWindowName*/,
DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext)
{
ASSERT(pParentWnd != NULL);
ASSERT(m_lpszTemplateName != NULL);

m_pCreateContext = pContext;    // save state for later OnCreate
#ifdef _DEBUG
// dialog template must exist and be invisible with WS_CHILD set  <——请注意此处
if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))
{
ASSERT(FALSE);          // invalid dialog template name
PostNcDestroy();        // cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUG


中的ASSERT时就报错,而在Release版本下却不会报错。我检查了一下这两个新加的Dialog与先前的Dialog属性有哪些不同,原来是自己把后来加的Dialog的Visible属性设置成了TRUE了, 根据代码的要求是:对话框模板必须存在,属性要设置成不可见和子窗口风格。SystemMenu和TitleBar属性最好都设为False,改完以后,一切正常~~
注:还有一种方法就是在添加Dialog资源时,在Dialog列表上点右键->添加资源,选择Dialog->IDD_FORMVIEW,再点“新建”按钮,这样新建出来的Dialog属性就会自动配好了

[手持设备大作业]之前的工作

之前让xiaoyi把需求给YY了出来,我也不知道该写什么,看也没看就让他交了。这次是动真格的了,设计文档肯定要懂一些的。星期六下午把EVC,platform builder给装了起来,仍然是一头雾水。
不过在突然发现了EVC的模拟器功能以后,一切都很OK了。大家的看法是:大不了交一个只有emulator版本的作业上去,这个就很简单了。争取在今天晚上和明天早上把EVC的版本做到可以下棋,判断。