在下一篇,我们将详细讨论MFC移植到WINX这个话题。
对WINX感兴趣?点击这里下载一个看看。
修订记录 1.1.02x (2006-12-03)
-----------------------------------------
哦,不好意思,很抱歉我忘了最重要的事情。现在,我统一了所有以表(Map)形式宏的风格。它们包括:
WINX_TEST_SUITE/WINX_TEST/WINX_TEST_SUITE_END;
WINX_CMDS_BEGIN/WINX_CMD/WINX_CMDS_END;
WINX_SYSCMD_BEGIN/WINX_SYSCMD/WINX_SYSCMD_END;
WINX_NOTIFY_BEGIN/WINX_NOTIFY/WINX_NOTIFY_END;
WINX_REFLECT_NOTIFY_BEGIN/WINX_REFLECT_NOTIFY/WINX_REFLECT_NOTIFY_END;
我推荐你使用这种风格:
class MyDialog : public winx::ModalDialog<MyDialog>
{
WINX_CMDS_BEGIN()
WINX_CMD(ID_TEST1, OnCmdTest1)
WINX_CMD(ID_TEST2, OnCmdTest2)
WINX_CMDS_END();
};
而不要使用以下这种就的风格(虽然它仍然可以工作):
class MyDialog : public winx::ModalDialog<MyDialog>
{
WINX_CMDS_BEGIN();
WINX_CMD(ID_TEST1, OnCmdTest1);
WINX_CMD(ID_TEST2, OnCmdTest2);
WINX_CMDS_END();
};
修订记录 1.1.02 (2006-12-02)
-----------------------------------------
这个发布主要关注:
- 移植MFC程序到WINX。提供了一些样例。
- 部分有用的组件,它们被DocX项目用到了。
关于该项目,请参考:http://sourceforge.net/projects/docx.
- DocX将被用于生成WINX的文档。我会尽早发布它。
*) STL扩展库(stdext)作为独立的组件
stdext(STL扩展库)过去是WINX库的一部分,但现在它被作为独立的组件。
我将目录树重这样:
├─winx
│ ├─include
│ │ ├─winx
│ │ └─stdext
│ ├─docs(zh-CN)
│ ├─docs(en)
│ ├─samples
│ ├─tutorials
│ └─lib
├─winsdk
│ ├─bin
│ ├─include
│ └─lib
└─wtl
├─include
├─Notes
├─Samples
└─Wizards
改成了这样(注意stdext的变化):
├─winx
│ ├─include
│ │ └─winx
│ ├─docs(zh-CN)
│ ├─docs(en)
│ ├─samples
│ ├─tutorials
│ └─lib
├─stdext
│ └─include
│ └─stdext
├─winsdk
│ ├─bin
│ ├─include
│ └─lib
└─wtl
├─include
├─Notes
├─Samples
└─Wizards
*) 样例: 移植MFC程序到WINX
- samples/mfc-port/LCDMatrix(MFC)
概要: LCD数字控件。
作者: Nic Wilson, 2002.
网页: http://www.codeproject.com/staticctrl/digidisplay.asp
- samples/mfc-port/LCDMatrix
概要: 将MFC程序LCDMatrix移植到WINX.
- samples/mfc-port/AboutCtrl(MFC)
概要: 一个用于显示关于对话框中版权信息的控件。
作者: Pablo van der Meer, 2002.
网页: http://www.codeproject.com/staticctrl/aboutctrl.asp
注意: 我没有提供这个程序的WINX版本,因为我希望看到你会尝试这样做。
我将在下一个发布中提供参考版本。
*) STL扩展库(stdext)
- TestCase: CppUnit风格的单元测试宏(但更轻量)
WINX_TEST_APP, WINX_TEST_CLASS, WINX_TEST_SUITE, WINX_TEST, WINX_TEST_SUITE_END
UnitTestAssert(AssertExp, AssertEq, AssertEqBuf)
- Archive类:
StreamArchive(StreamWriteArchive, StreamReadArchive, MemStreamWriteArchive, MemStreamReadArchive)
StdioArchive(StdioWriteArchive, StdioReadArchive)
ReadArchiveImpl, WriteArchiveImpl:
- 二进制读写: put16i/get16i, put32i/get32i, put_struct/get_struct, read/write, etc
- 文本读写: scan_uint, get_uint, get_not_if/getnws, skip_if/skipws, etc.
- DigitTable, ULargeInteger, LargeInteger
一些小的工具类,Archive类用到了它们.
- 算法: set_intersection_do (see std::set_intersection)
- KMP字符串查找算法:
std::kmp::Finder, std::kmp::CaseFinder, std::kmp::NoCaseFinder
- Pool(内存池):
boost::pool, boost::object_pool, etc.
这些组件需要boost,参考:http://www.boost.org。