RSS 2.0 Feed
2006-06 Entries
摘要:OK, 这不是Tech ED 2004的讲座,而是从6月19号开始Codeguru上的一个活动。在一周之内,Visual C++项目组成员将会就此主题回答提问。目前看来提问大多集中在Visual C++未来的发展上,不过有想挖黑历史的也不要错过。 活动地址在http://www.codeguru.com/forum/forumdisplay.php?f=89,语言是英语(……)...[阅读全文]

posted @ | Feedback (1) | Filed Under [ 随笔 ]

摘要:微软主管开发部门的副总裁S. "Soma" Somasegar近日宣布了MSDN WIKI的测试版本的启动,我也终于可以摆脱保密协议的限制来讨论这个项目了。MSDN WIKI是一个公开的在线合作创作的文档项目,目前看起来是处于原型测试阶段,只有英语版本,而且不支持内部链接,但是在最终版本中应该会有各种语言的版本。目前这个项目中仅包含了Visual Studio 2005和.Net Framework 2.0的文档,但是项目计划包含所有的MSDN内容。尽管还很粗糙,但是微软在和开发社区的互动中又迈了一大步。 在项目FAQ中,微软声明测试阶段的内容会被移植到最终版本中,但是目前不知道在加入更多格式化功能之后如何格式化现有的内容。目前使用者需要一个Windows Live ID进行登录,使用IE来浏览网站,而且目前不能修改文章内容,只能在文末添加类似BLOG评论的脚注。 如果觉得现在的MSDN文档需要补充,那么就去MSDN WIKI分享自己的发现吧。注意,用户贡献的内容受到Creative Commons非商业授权协议的约束。这个项目的BLOG在http://blogs.msdn.com/msdnwiki。...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 随笔 文档(Documentation) ]

摘要:在计算亲和数的时候,由于涉及到密集运算,有必要把计算工作转移到背景线程,以避免界面会失去响应。在.Net 1.0中,可以用ManualResetEvent、线程和Delegate的异步调用来实现,但是在.Net 2.0中,可以使用BackgroundWorker对象来简化这个工作。这个对象自动化了进度报告和终止线程的功能。 要使用这个对象来创建工作线程,首先需要加入一个BackgroundWorker对象到表单(Form)或者用户控件(UserControl),然后调用其RunWorkerAsync方法: private: System::Void AmicableNumberView_Load(System::Object^ sender, System::EventArgs^ e) ...{ propertyGrid->SelectedObject = Range; listViewPairs->VirtualListSize=0; timer->Start(); m_rAmicableNumberPairs->Clear(); backgroundWorker->RunWorkerAsync (Range); } 在线程创建之后会自动触发DoWork事件。这个事件中的处理类似于1.1中的线程函数体,可以通过访问DoWorkEventArgs参数的argument属性来访问在用RunWorkerAsync启动线程时传递的参数,以及调用ReportProgress定时报告进度。private: System::Void backgroundWorker_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) ...{ CAmicableNumberRange range=(CAmicableNumberRange)e->Argument; int nNumbers=range.Max-range.Min; int nPercentComplete=0; m_rGenerator->Range=range; m_rGenerator->StartWork(); while(!backgroundWorker->CancellationPending && m_rGenerator->DoWork())...{ nPercentComplete = (int)( ......[阅读全文]

posted @ | Feedback (6) | Filed Under [ 用户界面 .Net Framework 类库(Library) 语言(Language) C++/CLI/Managed C++ Extension ]

摘要: 点此查看本文代码  相亲数(Amicable Pair),又称亲和数、友爱数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等。 例如220与284: 220的全部约数(除掉本身)相加是:1+2+4+5+10+11+20+22+44+55+110=284 284的全部约数(除掉284本身)相加的和是:1+2+4+71+142=220 寻找指定范围内的相亲数的一个方法如下:对于范围内的每个数,用试除法获得约数,之后求和: int GetAmicableNumber(int nNumber) ...{ int nSumDivisors = SumDivisors(nNumber); if (nSumDivisors == nNumber) return 0;//perfect number if (nNumber == SumDivisors(nSumDivisors)) return nSumDivisors; return 0; } int SumDivisors(int n) ...{ ......[阅读全文]

posted @ | Feedback (9) | Filed Under [ .Net Framework 语言(Language) C++/CLI/Managed C++ Extension ]

摘要:一个算法的优化的相关代码// Amicable.h #pragma once #include "WinFormThread.h" using namespace System; using namespace System::Collections::Generic; /**//// <summary> /// Amicable Number Generator /// Search a range for amicable pairs. /// </summary> namespace Amicable ...{ /**//// <summary> /// An amicable pair consists of two distinct integers /// for which the sum of proper divisors (the divisors excluding the number itself) ///......[阅读全文]

posted @ | Feedback (1) | Filed Under [ .Net Framework 语言(Language) C++/CLI/Managed C++ Extension ]