??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品中文字幕久久,国产精品一久久香蕉国产线看 ,久久青青草原精品国产不卡http://www.shnenglu.com/wlwlxj/category/2266.html<div>一个吃软饭的男?!!!!我只惛_E序####<br>师夷之技以制? 向ְl日而思矣,不如臾之所学也<br>喝碗孟婆?t过奈何?涅槃</div> I've been programming since I was 21. Started with C++, looked at Java, keen on Visual Basic and Visual C++, thinking about .NET and C#.^_^,very ridiculous.zh-cnTue, 20 May 2008 12:08:04 GMTTue, 20 May 2008 12:08:04 GMT60VC8中MFC集成ATLlg注册时注意的一个问?/title><link>http://www.shnenglu.com/wlwlxj/archive/2008/02/26/43247.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Tue, 26 Feb 2008 03:49:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2008/02/26/43247.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/43247.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2008/02/26/43247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/43247.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/43247.html</trackback:ping><description><![CDATA[<br>׃VC8生成MFCE序时候如果选择创徏solutionQexe不在本目录的debug目录下,而是在solution的debug目录下。当加入atl支持时候,生成的tlb却在本目录的debug下。此时类型库注册需要手工执行:%exe路径% -RegServer。此Ӟ如果tlb不在exel一目录Q注册是p|的。所以一定要拯到当前目录再注册? <img src ="http://www.shnenglu.com/wlwlxj/aggbug/43247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2008-02-26 11:49 <a href="http://www.shnenglu.com/wlwlxj/archive/2008/02/26/43247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>未来界面应该是这Lhttp://www.shnenglu.com/wlwlxj/archive/2007/10/05/33531.html万连?/dc:creator>万连?/author>Fri, 05 Oct 2007 12:38:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/10/05/33531.htmlhttp://www.shnenglu.com/wlwlxj/comments/33531.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/10/05/33531.html#Feedback4http://www.shnenglu.com/wlwlxj/comments/commentRss/33531.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/33531.html随着Web技术的发展Qweb界面更加pȝQ有了大量的UI库。反观桌面开发却昑־处处束手束脚Q大把的UI开发问题?br>
借助JS技术+WebBrowserQCOMQ可以很单的集成HTML与FlashQ界面开发即单又漂亮。其中重要的是对于WebBrowser的站点的控制以及事g的捕P通过查看MFC的CDhtmlDlg代码可以很容易做到。这其中最重要的一点就是技术上的^衡,对于UI的控制可以通过JS代码Q也可以通过Web事gQ其中的归一点就是DOM模型。ICQ中大量用了此技术,界面煞是漂亮Q就是吃点内存,随着g的发展估计这个不是太大问题?br>
下面是YUI的JS集成到Dlg中:


]]>
U技术讨论com控g创徏q程http://www.shnenglu.com/wlwlxj/archive/2007/07/07/27645.html万连?/dc:creator>万连?/author>Fri, 06 Jul 2007 16:59:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/07/07/27645.htmlhttp://www.shnenglu.com/wlwlxj/comments/27645.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/07/07/27645.html#Feedback2http://www.shnenglu.com/wlwlxj/comments/commentRss/27645.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/27645.html阅读全文

]]>
界面l于出来一Ҏhttp://www.shnenglu.com/wlwlxj/archive/2007/04/20/22393.html万连?/dc:creator>万连?/author>Fri, 20 Apr 2007 09:40:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/04/20/22393.htmlhttp://www.shnenglu.com/wlwlxj/comments/22393.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/04/20/22393.html#Feedback18http://www.shnenglu.com/wlwlxj/comments/commentRss/22393.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/22393.html阅读全文

]]>
自己ȝ好友列表http://www.shnenglu.com/wlwlxj/archive/2007/04/16/22027.html万连?/dc:creator>万连?/author>Mon, 16 Apr 2007 08:59:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/04/16/22027.htmlhttp://www.shnenglu.com/wlwlxj/comments/22027.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/04/16/22027.html#Feedback7http://www.shnenglu.com/wlwlxj/comments/commentRss/22027.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/22027.html阅读全文

]]>
用WLWUI库描qkugoo界面http://www.shnenglu.com/wlwlxj/archive/2007/04/04/21211.html万连?/dc:creator>万连?/author>Wed, 04 Apr 2007 01:41:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/04/04/21211.htmlhttp://www.shnenglu.com/wlwlxj/comments/21211.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/04/04/21211.html#Feedback3http://www.shnenglu.com/wlwlxj/comments/commentRss/21211.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/21211.html阅读全文

]]>
上班半个月的ȝhttp://www.shnenglu.com/wlwlxj/archive/2007/04/03/21178.html万连?/dc:creator>万连?/author>Tue, 03 Apr 2007 08:36:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2007/04/03/21178.htmlhttp://www.shnenglu.com/wlwlxj/comments/21178.htmlhttp://www.shnenglu.com/wlwlxj/archive/2007/04/03/21178.html#Feedback5http://www.shnenglu.com/wlwlxj/comments/commentRss/21178.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/21178.html阅读全文

]]>
用MFC实现WebGUIQ-(CDHtmlDialog)http://www.shnenglu.com/wlwlxj/archive/2006/12/15/16495.html万连?/dc:creator>万连?/author>Fri, 15 Dec 2006 13:11:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/12/15/16495.htmlhttp://www.shnenglu.com/wlwlxj/comments/16495.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/12/15/16495.html#Feedback20http://www.shnenglu.com/wlwlxj/comments/commentRss/16495.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/16495.html
光写过2这斚w的文章,Zvc6实现Q绕弯很大。在vc7.1、vc8里面要简单很多,主要是把几个以前为公开的类公开了,最重要的是在CWnd里面加入了一个虚函数CreateControlSite使得有机会改变控件站点以修改控g行ؓ。在mfccdơ上QCHTMLView和CDHtmlDialog为开发者提供了创徏webgui的一pd基础设施Q包括事件机制、窗口行为、以及对html文档操纵接口。我们在此基上实现webgui很简单,然而仍然困惑我很久Q经理也催过我几ơ我一直未肯决定最l方案。在我脑袋里一直琢是要应用程序完全操Uhtml文档Q还是html讉K应用获取信息Q其实就是它们之间的通信模式。一直到昨天我才定下ҎQ应用通过IWebBrowser2接口操纵html元素Qhtml通过vbscript、javascript脚本响应本n事gQ访问应用。主要是考虑通信自然畅通,而以前我一x通过应用指o完全控制html元素Q导致去解析html文档Q费力不讨好。下面开始我的想法:

写一个dllQ封装CDHtmlDialogQ提供一个类似html容器的对话框Q功能就是加载html|页Q以及创Zhtml呼应的comlg。它本n不包含与应用功能有关代码Q应用有关的部分是html面和对于的com功能lg。这里需要对CDHtmlDialogq行了适当的改造以适合自己的目标:

首先从CDHtmlDialogz一个类CHTMLContainerDlgQ默认情况下会生成一个网资源,q个|页是这个对话框创徏时加载的Q我们需要的其实是一个容器而不是一个具体的对话框,所以删除网资源,修改对话框头文gQ?br />
enum { IDD = IDD_HTMLCONTAINERDLG, IDH = 0 };
q里把IDH修改?Q因为我们删除了|页资源。然而在对话框创建后会加载该资源Q在CDHtmlDialog的OnInitDialog函数里面我们可以看到Q?br />
if (m_nHtmlResID)
        LoadFromResource(m_nHtmlResID);
    else if (m_szHtmlResID)
        LoadFromResource(m_szHtmlResID);
    else if (m_strCurrentUrl)
        Navigate(m_strCurrentUrl);
l果是对话框一出现׃出现加蝲一个无效地址的页面,出现无法打开链接的页面,Z避免q个问题Q需要重载OnInitDialog函数。其实就是拷贝mfc代码然后L上面那段代码okQ强制不加蝲面。那么ؓ了加载指定页面,需要一个函敎ͼ
void CHTMLContainerDlg::SetHtmlAndCom(CString strURL, CString strProg)
{
    HRESULT        hr        = NOERROR;
    m_strURL = strURL;
    hr = m_spComDisp.CoCreateInstance(strProg);
    if(FAILED(hr))
    {
        TRACE(_T("Some error when create com object\n"));
    }
    SetExternalDispatch(m_spComDisp);
}
指定html的url和对应功能组件的progidQ这样在|页里面可以通过脚本window.external讉K该comlg?br />q样可以加载html|页Q但是html面里面的元素风格却?k风格(臛_在ie7以下版本是如?Q这个怕是没vC点美观作用,Z我考虑了半天,问过做web的h是否有办法,最l还是灵感光_误撞上了。重载GetHostInfo函数Q?br />
STDMETHODIMP CHTMLContainerDlg::GetHostInfo(DOCHOSTUIINFO* pInfo)
{
    pInfo->dwFlags = DOCHOSTUIFLAG_THEME;
    return S_OK;
}
q个多得不说Q^_^?br />下面可以演CZQ在vs2005里面找个向导来show一下:
CHTMLContainerDlg    dlg;
    TCHAR                szPath[MAX_PATH] 
= 0 };
    CString                strPath;
    GetCurrentDirectory(MAX_PATH, szPath);
    strPath 
= szPath;
    strPath 
+= _T("\\Default.htm");
    dlg.SetHtmlAndCom(strPath, _T(
"TestWebCom.WebComCtrl"));
    dlg.DoModal();


对话框标题其实可以通过解析html文档获取title标题讄Q目前还未处理。下面看看html与应用交互的lg?br />生成一个atl工程QTestWebComQ添加一个comlgWebComCtrlQ添加方法处理上面那个带...的按?文gҎ览按?Q?br />
STDMETHODIMP CWebComCtrl::ShowFolderBrowser(void)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    
// TODO: 在此d实现代码
    AfxMessageBox(_T("In Com, you can show folder select dialog"));
    
return S_OK;
}

q里不作具体处理Q只是象征性弹Z个对话框。好了,上面我们在对话框里面已经讄了comlg的progidQ这里可以把html和组件关联上了,通过脚本可以讉KcomlgҎQ?br />
<BUTTON CLASS="buttonClass3Custom" ID="BrowseBtn" TYPE="BUTTON" TITLE="览头文件? onClick="OnBrowseHeaderFile();"></BUTTON>
脚本如下Q?br />
function OnBrowseHeaderFile()
{
    window.external.ShowFolderBrowser();
}
下面q行试一试,按下选择文gҎ钮会出现如下询问lg是否安全的对话框Q?br />
q个很恼人,用户可没有耐心忍受每次多弹个对话框询问lg是否安全。我开始打将lg实现安全接口解决掉此问题Q不q不知道~何Q没有成功,|上搜烦一下好像说在ie7里面无效Q没办法q是看mfc源码来解决问题?br />CDHtmlDialogc获取external代码如下Q?br />
STDMETHODIMP CDHtmlDialog::GetExternal(IDispatch **ppDispatch)
{
    
if(ppDispatch == NULL)
        
return E_POINTER;
        
    
*ppDispatch = NULL;
    
if (m_spExternalDisp.p && CanAccessExternal())
    
{
        m_spExternalDisp.p
->AddRef();
        
*ppDispatch = m_spExternalDisp.p;
        
return S_OK;
    }

    
return E_NOTIMPL;
}
看到CanAccessExternal函数Q肯定就是验证安全性的代码Q找到函数声明,q好是虚函数Q重载直接返回TRUEQ?br />
BOOL CHTMLContainerDlg::CanAccessExternal()
{
    
// we trust all com object (haha, you can make virus)
    return TRUE;
}
有兴的朋友可以看下内部实现?br />q下好了,按下|页选择文gҎ钮,弹出对话框:

一套流E完备,Ҏ个h觉得不错Q各司其职,通信自然畅通,一个html配对一个com功能lgQ功能组件化不仅使代码封装性好Q而且可以用于多种语言?br />
׃此技术不用于公司开发,今整理提?a href="/files/wlwlxj/WebGUI.rar">下蝲

]]>
闲暇旉做的几个界面http://www.shnenglu.com/wlwlxj/archive/2006/12/03/15930.html万连?/dc:creator>万连?/author>Sun, 03 Dec 2006 09:10:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/12/03/15930.htmlhttp://www.shnenglu.com/wlwlxj/comments/15930.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/12/03/15930.html#Feedback7http://www.shnenglu.com/wlwlxj/comments/commentRss/15930.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/15930.html最q比较忙Qؓmapgis二次开发封装控Ӟ虽然不费脑袋Q但是ȝ在那里,很难有大块时间做自己喜欢的事情。ؓ了充实自q片旉片断Q决定看看一些窗口技巧,所以模仿做了几个界面完善了以前我的一个skin例子Q主要解?k和xp下的不一_?br />截图Q?br />对话框skinQ?br />

H口控gskinQ?br />skin前:

Skin后:



对话框skinZ贴图Q窗口控件基于gdiQ各自有自己优势。对话框上面位图上的部件没有处理,可能需要rgn操作描述部g位置信息。gdi skin比较完善Q只是示例不全面Q风格只有java的。有旉慢慢做,自娱自乐?br />
demo下蝲



]]>
转孙辉老师《十qMFCl历认识的Microsoft技术?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/11/18/15399.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Sat, 18 Nov 2006 14:26:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/11/18/15399.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/15399.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/11/18/15399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/15399.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/15399.html</trackback:ping><description><![CDATA[ <p>记得2005q在csdn上看到这文章,当时可能׃q篇文章很热闹,文章我实在没有精诅R我在后面留下了一句话“向微Y敬礼”,q个q我自己都忘CQ还?q后回到帖子L发现?br />?006q?月(大概Q,我在公司内网上看到这文章,没有注明作者是谁。我大致看了一下,只是觉得作者很有见识,非常厉害。当我生去北京的念头的时候,我发了一个求职脓。第二天Q我受到msn消息Q一个叫孙辉的加我。我当时不知道是谁,在msn里面单谈Z下,觉得Ҏ对编E的概念比我高几个境界。末,Ҏ留下一句话Q“看看《十qMFCl历认识的Microsoft技术》”。当我搜索到q篇帖子的时候,我发现那是公司的内|上面那文章,立马Q我惛_刚刚那个人就是孙辉老师。我马上回复信息{应了要d京?br />在我l致看望q篇文章后,我有一U荡气回肠的感觉Q尤其是microsoft和borland~译器大战,让我联想到战国群雄,此v彼弱Q一招不慎,全盘皆束。此后该文章成为我的励志篇Q每当我躁不安的时候,我ȝd来看看?br />在北京与孙辉老师׃4个多月,感受到的是执着、深邃,学到了技术和做h的道理。再ơ{载这文章,ZCq段师情友谊Q有时候感慨h生唏嘘,回头来以l看不清脚印了。h间\区区折折Q唯有开阔的心胸才能历经万难Q阔步前q。其中的大多故事Q孙老师亲自l我讲过Q很怀念一L日子?br /><br /><br /><span id="xjddtdf" class="postbody">孙辉老师《十qMFCl历认识的Microsoft技术?<br />自从2005q??日下?6时“十qMFCl历认识的Microsoft技术”以帖子的方式发表于CSDN论坛后,引v了许多网友得好评Q得笔者诚惶诚恐,考虑到该贴过?人气指数?000)Q因此{UdBlog上,许多|友Ҏ帖的评语只好省略Q在此鄙q了Qؓ感谢|友的支持,本h希望今后能发出新的帖子以回报|友Ҏ的鼓励,再一ơ谢谢! <br /><br /><br /><br /><br /><br />初识MFC <br />我最初知道MFC大概是在1993q_那个时候Visual C++q没面世Q当时Microsoft的C++~译器还很弱Q官方的名字是Microsoft C/C++ 7.0QMFC的版本是1.0Q几乎没有引起什么反响,那个时期最好的C++开发环境是Borland C++ 3.1Q其实,大概?992q?1月䆾Q一个偶然的ZQ我领略到Borland公司的厉宻IC得在什么地方,我看C个绝妙的集成开发环境,即Turbo C++ 3.0 for WindowsQ这是我记忆中第一个真正的Windows环境下的C++集成开发环境,那种Ȁ动的感觉至今仍记忆犹斎ͼ不客气的_当时臛_在C++斚wQMicrosoft与Borland不是一个水q的QBorland明显的要高于Microsoft QBorland的品在技术上l我留下深刻的印象。那个时候Microsoft最好的开发^台是Visual Basic 3.0Q而Borland的Delphi正处于开发阶D(Delphi 的代码名U是Q“VB Killer”)……,惌vq些十几q前的往事,我不感慨万千?<br />十几q来Q我用过许多开发环境,关于Visual BasicQ我用过最早的DOS版本QWindows版的Visual Basic我基本上全都用过Q至今我q记得每个版本的VB安装盘磁盘的盘数。同P我用q各个版本的DelphiQ特别是Delphi 2.0Q给我留下极好的印象。Delphi提供真正~译的可视化开发环境,那个时候(1994q左叻IQDelphi可以开发带有GUI的动态链接库Q你可以惌Q在Microsoft Access 2.0的应用程序中可以加蝲一个Delphi Formq进行程序交互,那种感觉真是极了?<br />Borland C++是我心中无法Ҏ的遗憾,从Turbo C到C++ BuilderQ我深刻的体验到Borland的辉煌和无奈QDelphi从VB Killer走到为VB护航Q你可以惌Delphi一步到位的ActiveX 控g开发技术有多牛Q早期的VB有多土,早期的VB不能开发动态链接库Q因此无法开发ActiveX 控gQ想h真o人嘘唏不ԌQBorland C++的命q也是不。Borland C++ 3.1的辉煌永q不再了Q十几年的开发工作中Q我在C++上投入了大量的精力,Borland C++曄l我带来无数的激动,然而这个经典的名字却在与Microsoft的竞争中渐渐的流逝了……?<br />MFC4.0的出玎ͼ使得Z感觉Microsoft在C++斚w赶上来了Q这一版的MFC是Win95推出后出现在Visual C++ 4中(Microsoft没有VC 3QVC4以前的版本是2.2?.1?.0?.51?.5?.0Q。也许是对Borland C++的潜意识的失望,我不知不觉的接受了MFCQVC 4.2推出Ӟ我通过正常渠道购买了这个编译器的企业版?<br /><br /><br /><br /><br /><br />关于Microsoft <br />关于MicrosoftQ有无数的h要对q个名字叙说感觉Q这个o厌的名字Q不知道是喜Ƣ还是憎Ӟ你是E序员,你的心思可能就要因Microsoft的存在而动Q即使你用LinuxQ你可能也是因ؓMicrosoft技术因素。多年来,q个名字每天都出现在你、我、他的面前,因ؓ你不得不面对Windows的存在,可是你憎恨这个名字吗Q你讨厌q个名字吗?我不知道是否已经对这个名字麻木了?998q我个h订了Microsoft MSDN Universal 版,我开始比较全面接触这个公司的开发技术,你可以想象,1998q当你面对上癑ּ技术光盘的时候,你就知道什么叫做“厚度”,当我们有时说出“赶上”或 “达到”Microsoft某些产品的水q的时候,可能我们~Z对这个公司“厚度”的真实了解。进入MSDNQ我感觉Microsoft直不是一个“公司”,而是Q或者正在Ş成)一个“社会”。当时著名的技术网站http://www.codeguru.com全部的技术资料是可下载的Q那个时候http://www.codeguru.com提供整个|站内容下蝲服务Q大U?M左右Q,大名鼎鼎的www.codeproject.comq不存在。一开始,我始l潜意识在技术上ҎMicrosoft与BorlandQ应当说技术上Borland不比Microsoft弱,即现在也有人持有这个看法,可是Z么Borland走到今天q个地步Q而Microsoft却如日中天?若干q前Q这两个公司竞争何等Ȁ烈,而现在却是另一番“合作”的景象Q可能很多h惌Q如果Borland不存在,对Microsoft不是更有力吗Q其实Microsoft可能_N中国历Ԍ读过《三国》、十分了解战国时期的中国Q其实Borland形式上的存在Q对Microsoft是十分有利的Q至Ş式上q有竞争ҎQ而事实上Borland已经受控于MicrosoftQMicrosoft是Borland的大股东Q。你可以看到一些微妙的现象QBorland为Microsoft提供了大量的人才Q其中包括Delphi总设计师以及Borland C++~译器的核心成员Q同时也为Microsoft .NET提供强有力的护航服务Q看看C# Builder、Delphi .NETQ?998qMicrosoft 的COM技术基本已l成熟,q个技术人感到震|当时Microsoft的对手们提出“OpenDoc”用于对抗“COM”,你看看“OpenDoc”阵营的几个成员QIBM、Apple、Borland、NovellQ你会感到这个阵营十分豪华、强大。但l果却差Zh意,“OpenDoc”无疾而终Q而“COM”依然生机勃勃?<br />有h说“COM”没落了Q那么就太不了解Microsoft了。在与“OpenDoc”的竞争中,“COM”是个彻底的胜利者,在与“Java”的竞争中,“COM”成功的q化了,在这个过E中Microsoft体现了强大的吸收能力、以及无法想象的韧劲?NET只不q是COM的“别名”而已。对于一个经验丰富的C++E序员而言Q?NET是COM的进化,而Microsoft内部.NET是“COM 3.0”(OLE2是COM 2.0Q,而“CLR”就是一个不择不扣的COM对象。曾l有人问我,既然牛顿时代奠定了基础Q想惌名的牛顿-莱布D公式Q,几百q后的今天,数学q研I“微U分”吗Q回{当然是依然在研IӞ“微U分”早期是针对函数的,C“微U分”是针对“流形(ManifoldQ、纤l丛QFiber BundleQ”的Q概忉|奥了Q可是基本思想不变Q只是“微U分”的思想得到合理的g拓与q化Q你了解Microsoft吗?Microsoft Research有一批超一的数学家在为Microsoft工作Q其中一些是斐尔兹奖的得主,Microsoft正在实现如同“微U分”进化到“微分流形”一样将“COM”进化到?NET”。从U学概念角度上分析COM与JavaQ可能COM更全面、精,从实现的成熟度上Java可能更成熟,可是你看刎ͼMicrosoft正在不紧不慢的追赶。Microsoft令h联想h国时期的强秦?<br />战国时期的秦国,采取“远交近攠Z“抚弱掠强”等措施傲视六国Q今天的Microsoft也是q样QVB1.0ӞMicrosoft推出“VBX”控件技术,众多的小公司得以生存QMicrosoft自己不开发“VBX”组Ӟ同样“VBX”进化ؓ“OCX”时QMicrosoftq不十分强大Q可是这U试探得C多小公司的响应?997qMicrosoft Office 97?998qMicrosoft推出Visual Studio 6.0Q给众多中、小公司提供了生存、发展的ZQ例如Microsoft Office 97中集成了Visual Basic for Application 5.0Q这Ҏ术得几癑֮软g开发商与Microsoft{v了VBA技术许可协议,即AutoDeskq样的公叔R与Microsoft{v了这个协议,q个协议使得每个集成VBA的品的l个用户许可为Microsoft?0$的许可费Q如果你了解VSIPQVisual Studio Integration ProtocolQ协议,以及有多公司签订了VSIP协议Q你q正感觉到Microsoft的可怕;Microsoft Office 97、Visual Studio 6.0的用L面十分漂亮,Z么Microsoft自己的开发工具不提供cM的Y件组Ӟ你看C多第三方的Microsoft盟友UL推出自己的界面库以模仿MicrosoftQ他们不会反对MicrosoftQ因Z们已lŞ成了使得Microsoft以及q些公司得以生存的生态圈?<br />Microsoft的技术储备有多少QMicrosoft之外的h很难说清楚,Microsoft中国公司也未必了解多,1999qWTLcd刚刚出现的时候,Z希望WTL能得到官方的支持Q或授权l一个Microsoft之外的一个公司(你能惌出Borland C++ 5.0内置的ActiveX开发机制是ZMicrosoft ATLcd吗?Q,直到今天QWTL依然如故Q我们完全相信,如果Microsoft强力推广WTLQWTL完全可以行Q可是Microsoft不缺cM的技术,cM的类库还有BCL(Base Control LibraryQ一个用于开发轻量ActiveX控g的类?QMicrosoftq有一个基于ATL的类库,q个cd用于开发ActiveX DesignerQActiveX Designer是绝大多数程序员不了解得一cd象,如果你熟悉Office开发,你知道Office VBA 中有一cd象,即Form2Q此外VB6.0 中的报表设计器(以及著名的Active ReporterQ,都属于此cd象,用这个类库,你可以ؓVB6.0以及集成VBA的系l提供定制化的可视化设计机制{等Q如今ActiveX Designer已经演化为集成于Visual Studio .NET中的设计器?<br /><br /><br /><br /><br /><br />向Microsoft学习 <br />无论从什么角度评价MicrosoftQ我觉得Microsoft是值得我们学习的,如果说生zdq个时代有Microsoft存在是一场灾难,你就应该痛恨q个家伙Q但你首先要向这个家伙学习!我无意ؓMicrosoft歌功颂dQ我只是惌出十几年我对Microsoft技术的感受?<br />Microsoft在研I式的开发中受益极大Q如果你有兴,你可以访问http://research.microsoft.com/Q虽焉分中国公怹有研IQ但与Microsoft相比Q真有“米_之珠,也放光华Q”的感觉?003q_我在北京的一个地方现Z验了Microsoft亚洲研究院的招聘会,我看C国的_英们进入Microsoft的望,事实上,在中国大陆,Microsoft亚洲研究院的人力资源已经延到各著名高校的相关专业的核心层,我感刎ͼMicrosoft几乎不需要“求贤”,因ؓQ只要Microsoft需要,_英们会“蜂拥而至”,每个人都有“可以理解”的理由而向往那个地方Q如果ؓ搞数学研I蜂拥到加州大学Q我觉得可以理解Q因为那里有数学土壤Q出了成果国Z会感到自豪,因ؓ“科学无国界”。技术是否有国界Q不知道是否有定论?Q想想DVD{技术专利给国内业界带来的灾难,不知道应不应该痛定思痛Q在Microsoft校园招聘现场的气氛中Q我g明白了ؓ什么国人“原创技术”少得可怜。我读过几本Microsoft亚洲研究院的高手写的书,明显可以看出QBill gate 是他们的_领袖以及他们对Microsoft的虔诚,国内的研I机构应当研I一下Microsoft的用Z道,Microsoft好像是三国里的h物,不知是刘备还是曹操,或者二者的混合物。我l常路过西格玛大厦,W一ơ西格玛大厦q入真有“朝圣”的感觉Q也与Microsoft中国的几个层ơ的人打q交道,各中滋味实在一a隑ְ?<br />在Office大战中,国软g的确在一些方面与Microsoftq行较量Q其实给人的感觉很勉强,界面上的似是而非Q或用户习惯斚w的接qƈ不能解决Ҏ的问题,一个好的Y件开发h员必L一个Y件用的高手Q很难想象一个Y件操作水q_拙劣的开发h员能开发出高水q的软gQ我最早用的软g之一是Microsoft WordQ当时的版本?.0Q大概是1992q的事情Q给我留下深d象的是集成于Word中的Word BasicQ后来,我接触到Excel 3.0Q不出所料,Excel中集成的是Excel BasicQ后来用的Access中自然内|Access Basic 1.0Q在q些软g集成捆绑成Office之前Q我感觉这些品的构思十分了不vQ很hMicrosoft的风|因ؓ你知道,即是一个DOSQMicrosoft都要提供一个内|的QBasic或GW Basic。虽然关于Microsoft的品评论很多,作ؓ一个技术h员,我认为Microsoft的品构思绝ҎW一的Q从1994q早期的Officepd?997qŞ成的Office 4.2Q我认ؓQ技术构思上均领先于我国2002q以后的Office产品Q你听说q如下说法吗Q“Dos 作ؓ操作pȝ的时代,Windows是应用YӞWindows是操作系l时QOffice成ؓDos时代的WindowsQ那么如果按此规律,Office会不会替代Windows而成为操作系l?”,现在在开发领域Visual Studio( .NET)正在成ؓ另一个OfficeQ你注意C吗?控制Visual Studio( .NET)集成开发环境的仍然是一个Basic语言引擎QVisual Basic .NETQ?<br />与许多公怸同的是,在技术体pMQMicrosoft几乎所有的产品是息息相关的QWindows、Office、Visual Studio .NET虽然各不相同Q但公共的核心即Ş成,我们已经看到Q核心组件方面,Office与Visual Studio .NET日渐于一_例如Microsoft正在Office 2003的核心组件VBA 6.X逐步用新的Visual Studio Tools for Office替代Q而我们依然在一些似是而非的现象上与Microsoft的品比较差距,国家采购或政府采购支持的公司Q不去钻研核心技术,只是急功q利的采用短期行为急于与Microsoft怺Q不知是否有蚍蜉撼树的感觉,个h的体验是Q先学习MicrosoftQ踏t实实的学,了解MicrosoftQ深入的了解Q然后再喊口受?<br /><br /><br /><br /><br /><br />Z么用MFCQ?<br />l过若干q的竞争QBorland 的OWL几乎消失了,q个OWL是个非常漂亮的C++cdQ在Borland C++ 3.1风光无限的年代,OWL真正的做C独领风骚。然而,Borland C++ 4.0错过了进?2位程序的最x机,BC 4.0推出后不久,q来了Win95QBorland仓促上阵Q以一个小的“Pack”得BC4可以~译ZWin4的程序,当时的Visual C++?.0版,支持Window16的版本ؓVisual C++1.51Q有意思的是Borland可以用同一个编译器同时支持Win16、Win32Q而Microsoft却不得不为Win16、Win32提供不同的编译器。然而,非正式版本的Visual C++ 2.1与Visual C++ 2.2却悄悄地支持了Win95的最新特征,即Win95新提供的一l公共控Ӟ在我的印象中QBorland对Win95新特征的支持不利使得MFC与OWL的距L大的~短了。稍后到来的Borland C++ 4.5没有改变q个状况Q尽Borland C++ 5.0同时支持OWL与MFCQ可是|象已l显ԌBorland C++非常遗憾的只走到?.5版。C++ Builder虽然形式上引入了Delphi的VCL库,可是许多C++E序员ƈ不买账,因ؓ许多以C++Z的h更喜Ƣ以~辑的模式进行编码。Visual C++ 4.0的出玎ͼ在C++q个战场上,Borland开始落败了?<br />MFC发展C天,已经十多q了Q尽褒贬不一Q但可以肯定Q十几年的技术积累已l奠定了MFC的生存基Q即使Microsoft的长角发布,MFC也不能推出Windows的舞収ͼ事实上,长角QLonghornQ之后的Visual Studio .NET仍将MFC作ؓ一个重要的l成部分Q在今年的Visual Studio .NET 2005中,MFC在C++中的位置依然如故。MFC的未来,应该不必担心Q只要你深入考察.NETcdQ你会发玎ͼMFC的许多思想机制正悄然进?NETQ与此同ӞMicrosoft的第三方盟友十多q来已ؓMFC开发了大量的扩展库Q如果Microsoft是船Q第三方盟友是载舟之水。许多h认ؓMFC不发展了Q其实是一U错觉,Visual C++ 6的界面十分经典,特别是其中的Docking控制条机Ӟ其实Visual C++ 6的IDE完全是MFC写的Q可是MFCcd中控制条相关的类功能很弱Qؓ什么?你会看到许多与Microsoft友好的公司,他们很快的在MFC基础上实CVisual C++ 6 的Docking机制Q这是Microsoft的高明之处,Microsoft很会l盟友提供机会,其一贯的做法是在自q商品化品中预先提供一些有的特征Q得其他一些公司进行模仿以带动用户体。Borland不具备这L储备。MFCW三方市场的J荣Q得益于Microsoft的策略与明智。MFC可否跨^収ͼ理论上完全可以,Microsoft不做Q也是策略,但是有许多重要的产品Microsoft却默许MFCUL到其他^収ͼ事实上,Microsoft的合作伙伴之一Mainsoft公司QWindows源码是从这家公司流qQ,几年来就是负责移植MFCE序UL到UINIX、Linux、AIX{操作系l之上?<br />新版的Visual C++中MFC已经支持.NET开发了QMFC与ATL的协作更好了。根据我的经验,MFC、ATL?NET库三者完全可以融合在一L合应用到实际的开发工作中去,如果你是MFC行家Q我希望ATL?NET库能成ؓ你的忠实的左x。那么有没有同时支持MFC、ATL?NET库的E序Q当然有QVisual Studio .NET IDE是Q而且Visual Studio .NET IDEq支持用ATL?NET库扩展的Addin?<br /><br /><br /><br /><br /><br />认识Application对象 <br />如果你熟悉Microsoft OfficeQ你应该q一步的剖析q个大型软gQMicrosoft Office中几乎每个程序都是可二次开发的Q这一点得益于Microsoft Office内置的二ơ开发机Ӟ一个是ZCOM机制的VBA模型Q另一个是Z.NET框架的托模型:Visual Studio Tools for Office。作Z名程序员Q你应当在技术角度解析Office的技术结构。Microsoft的大多数软g的对象结构可以通过Visual Studio提供的工具OLE/COM Object Viewer考察其类型库得到Q通过引用cd库,你甚臛_以得到描q对象信息的C++头文件。这样做真是好处多多。一个典型的Office通常都有一个Application对象Q或其他一个与之相当的对象Q,q个对象相当于Y件枢U,在这里,我们不讨论OfficeQ借此话题说说Application对象。大多数支持扩展QAddin、PluginQ的软g都存在类似的构造。通常Q一个系l得Application对象或者是一个COM对象Q或者是一?NET对象Q如果你的系l存在这cd象,你的pȝ基本具备支持Addin、Plugin的机制了。一个理想的做法是在一个MFCpȝ中,内置一个ATL对象?NET对象Q稍后我们给出方案如何做到这一炏V设计Application对象的关键是如何规划q个对象的属性、方法、事件。如果你希望pȝ具备良好的扩展性,Application对象是十分关键的Q这也是构架艺术的体现。所谓Addin(Plugin)Q是pȝq行时根据需要加载的对象库,Addin(Plugin)之所以可以扩展系l,关键的因素就是系l加载Addin(Plugin)ӞApplication对象传递给Addin(Plugin)库,设想一下,如果Application恰到好处的触发了pȝ事gQ而Addin(Plugin)库如愿的解释了事Ӟ一个Addin(Plugin)库的d不就OK了吗Q因此Application对象是系l设计的关键?<br />如果你精通ATL对象Q在你的MFCpȝ中添加一个ATL对象Q这个Q务可以用VC Wizard完成。你已经接受了一个事实,是MFCE序中存在一个CXXXApp对象QCWinApp的派生类Q,现在你要做的是增加一个对应得ATL对象。这个对象可以在CXXXApp::InitInstance()中创建,如果ATL对象的类是CXXXAppObjectQ徏议你在CXXXApp对象对象中增加一个成员变量,例如QCComObject <CXXXAppObject >* m_pAppObjQ然后可以入下初始化m_pAppObjQ?<br />m_pAppObj = new CComObject <CXXXAppObject >Q?<br />注意E序l束时在CXXXApp::ExitInstance()中释放m_pAppObjQ语句如下: <br />delete m_pAppObjQ?<br />你可以将pȝ得关键属性设|成CXXXAppObject的属性,例如pȝ得标题、是否ؓ多文档等{。系l希望外部调用的功能可以实现为CXXXAppObject的方法,q一点取决于你的需要。系l需要外部扩展的功能Q表CؓCXXXAppObject的事Ӟ关键是在恰当的位|触发事件以及提供的事g参数。例如,你可以在CXXXApp::InitInstance()触发应用E序开始的事gOnStartUpQPlugin捕获事g后,可以q行特定的初始化Qn份确认、初始信息查询等{)Q?<br />你可以在CXXXApp::ExitInstance()触发应用E序l束事gQPlugin捕获事g后,处理用户需要的pȝ退出工作。所有的设计取决于具体设计?<br />如何加蝲PluginQ是一个有的问题Q如果Plugin实现Z个COM范畴QCategoryQ,可以q用COM技术枚举这个CategoryQ可以将Plugin安装C个特定目录,也可以通过注册表。Plugin的实现可以用COM技术、也可以?NET框架。适当的机会我会提供例子…?<br /><br /><br /><br /><br /><br />一些感?<br /><br /><br /><br /><br /><br />一时心血来潮Q就发了q个帖子Q很难说是有心,q是无意。几天前我在新浪|上看应氏杯围棋册Q我觉得该赢了吧Q作Z个围迷Q我们等了十几年Q等C属于国h的应氏杯。记??q前在还在大学工作的时候,有一ơ,一位同事兴致冲冲的走道我面前对我说Q“嗨Q昨天马XX赢了李昌镐!”,当时我在pd公室正在看报U,那位仁兄见我头都没抬Q非怸满的抢下报纸Q对我吼道:“喂Q马XX赢了李昌镐!Q你听到没有Q!Q”,我对他说Q“你大惊怪个啥?Q马XX输了李昌镐多盘Q你知道吗?”,马XX几乎一直在输给李昌镐,Z已经不奇怪了Q偶赢一ơ,国h把他捧得北都找不到了,李昌镐弱?7的时候就傲视q个世界了,可至今面孔不变,几天前的农心杯,中日联军5个hQ被他打个落花流_李昌镐是公认的世界第一Q以至于有的高手知道下一个对手如果是他,׃去订回程机票。这ơ应氏杯Q国人竟然感谢崔哲瀚,何也Q因个弱?9的小子,挡住了他的大哥李昌镐才得应氏杯有了悬念。当国h媒体在说韩国仅李昌镐一人厉害的时候,不知道是Z居心q是自欺ZhQ李昌镐q方30Q不知道要力压中、日多少q_面对q个名字Q真有点L了,q个太极虎!软g界又来了我们一向不齿的印度虎,2001q我们的软g出口额仅是印度的四十分之一Q我们震惊了Q怎么可能呢?q个四十分之一水分很大Q很可能更可怜!当时我在大连参加一个关于“大qY件出口国内第一”的官方会议Q那位大人在会上_“据_我们大连软g出口国内排名W一Q市有关领导希望今天的会议给个第一的数字依据,希望你们把数据报上来Q去q的数据也可xQ注意,我们要的只是数据Q你们仔l体会,我们Ҏ数据Q有奖励Q机会难得呀Q”……。某一天,几个朋友在我家看央视的对话节目,对话一方ؓ国内的Y件大鳄们Q用友、阿派{公司的老MQ,另一方ؓ印度软g的一个代表团。当问及中、印软g差距的时候,我们的刘老总(代表阿尔z)不以为然的说Q据他的看法Q我们已l快赶上Q印度)了,……,a下之意颇有印度的水^不过如此的感觉,印度方的话我至今记忆ҎQ“是否赶上,国际市场说的!在中国看来,印度E序员的个性不I技术也不怎么P其实是个错觉Q印度Y仉先注重个性,许多重要的美国商品化软g都是在印度本土开发的……”,我们的舆论L印度程序员的水qxq的q_xQ可是差距日渐拉开Q……,围棋、球(不好意思谈Q谈不出口!Q、YӞ我们被近ML锁了,乐坏了记者们、给媒体带来了生机…?<br />日本江户时代的围,如果一个h要想世袭一个称P例如Q本因坊Q,他必L胜所有的师兄弟,然后Q住q师父家的内室,你知道以后的事情吗?以后Q这个棋手,得为师父一家做饭、带孩子、搞卫生……,其余的门人则一心一意的下棋Q这L人、方式,造就了一代一代的本因坊,他们的棋谱大多数都流芌今,q就是早期日本围的悟道模式。Y件d有多语句?我最早接触的计算Y件教材是一本英文版的(影印的D版)Q不同于我们Q那本书的作者构造了“X-语言”,他们不讲什么C、Pascal、BasicQ一旦缺了什么机Ӟq“X-语言”添加些成分。什么C、Pascal、BasicQ你感觉差不多,但现在却分出了等U!我们N语言的能力弱得很Q可是我们在语言的细微之处却很讲IӞ不知道对不对Q许多程序员也许是出于虚荣而用C++Q事实上Q地球h都知道,做数据库QDelphi、VBq比C++胜QQ铺天盖地的C++的书Q写的东西几乎雷同,因ؓQ有用的或者作者不写、或者作者不懂。有时我在想Q如果国内没有内需Q会怎样Q也许Y件内需的存在,造就了中国Y件的特色Q我认ؓ国内业界q没有充分利用中国Y件内需的存在,也许中国软g内需的存在是软g落后的硬伤?<br />我记得一部电影《神辫》,那个英雄的大辫子被洋人炸掉了Q最l他成了枪手,战胜zh用大刀、秘c是不行的,用洋的东西战胜洋的技术才是正道。我觉得Q一个好的程序员必须了解软g的历Ԍ学习历史Q你知道你ؓ什么弱Q别人是如何强大的。我们正在另一个战Z抗美Q可W的是我们却要赶印度!Q,无论Microsoft、Borland如何争斗Q无Z们谁l治谁,他们不媄响美国的强大Q朋友们Q学习MicrosoftQ开发出让国人感到牛的YӞ <br />q个帖子Z本h的意料,愿意与大家共勉,希望q个帖子常在Q与大家敞开心扉的交! <br /><br /><br /><br /><br /><br />FireFox与Microsoft <br />FireFox在一片赞扬、欢呼声中激情登ZQ也思h们真的期待已久,q静的水面终于被扔进一块石头。我是IE的最早期的用户了Q?996q首ơMicrosoft的TEDQ技术教育大会)QIE4q没有发布时候,我们有机会目睹了内部版本的IE4Q当时内部名U是Q纳什l尔Q英文名U忘CQ,那真是一ơo人激动的预览Q当时IE3与Navigator 3Ȁ战正酣。当你第一ơ看到想象中的“Active Desktop”,如果你没有n临其境,你不会激动。IE4本质上是一个ShellQ其SDK是免费的QNavigator是基于Mozilla的浏览器Q虽然是开源的Q由于要照顾更大的共性(与操作系l无养IQ因此Mozilla不能充分的利用Windows的优势,Mozilla不能为广大的E序员带来所谓开发h员的“快感”,尖E序员可以驾驭MozillaQ以实现技术深度带来的乐趣Q最早的Navigator同时提供17个版本(注意Q不?7U自然语aQ而是17U操作系l)Q从数学角度分析QMozilla像一l公理,你可以以此ؓ基础开发不同操作系l上的浏览器QNavigator是ZMozilla的一个漂亮的l果Q你能欣赏到代码l构的优,然而失ȝ却是功能强大的个性(要知道,Windows用户在数量上q大于其他操作系l用LdQ。普通用户不可能LMozilla的代码,即懂了也不能很好的q用Q这也许是MozillaQ以及大多数开源代码)p|的致命原因之一。IE内核聪明的抓住了开发者,你想惻IҎ以万计的中、初U开发者而言Q容易驾驭是首选的选择Q也是明智的。我读过MozillaQ但我不会在开发过E中Z个具体的目应用它。只要是览器,׃可能l对的安全,无论是MozillaQ还是IE。当我了解到FireFox是基于Mozilla的一个新的浏览器Q我基本上对其失M信心Q我有一个奇怪的观点QFireFox的推出,最大的受益者绝ҎMicrosoftQ即使Microsoft失去20%的䆾额,但是会导致Microsoft强化IEQMicrosoft正不知道如何促IEq化的时候,FireFox的出现无疑ؓMicrosoft提供了机会,物种q化的原则就是竞争,FireFox是促进IEq一步强大的催化剂。FireFox的扩展机制的十分灵z,如果Ҏ不是MicrosoftQ就很难掀hL澜,而且当高U的开发者逐渐了解FireFox的时候,FireFox的漏z就会渐渐暴Ԍ试想惻I如果某种Linux取代了WindowsQ那么,它的漏洞也会与Windows一样多Q因为那个时候,会有与研IWindows漏洞一样多的hȝI对应得Linux的漏z!从个人的角度上看QMicrosoft也许有点“冤”,因ؓH视Microsoftq的h实在太多了。从理论上看Q计机安全性是个永q的话题Q就像Q何社会都需要警察一P没有了小偗贼、犯|,警察也就消失了,你想惻I文明是什么?野蛮能消失吗Q野蛮消׃Q文明也׃存在了,高度文明是更不存在了。hcd服了癌症Q下一个疾病会比癌症更致命Q但qƈ不意味着不必克服了癌症,q步真是一U挑战…?<br />IE的技术构思肯定是个卓的构思,IE可扩展的机制Q会lWindows开发者带来许许多多的益处。我正在计划一片文章,介绍如何你的对象模型与MSHTML库实现对接,q样Q在HTML文g中可以将你的指opȝ与HTML对象模型融合在一赗?<br /><br /><br /><br /><br /><br />话说“Hook?<br />在CSDN上时常看到关于“hook”,的问题,令我惌v另一个话题,那就是游戏“外挂”。Hook提供一U改变一个WindowsH口消息处理的一U手D,通常的开发根本用不到Q因此,谈不上“常用”,早期的WindowsQ由于不能很好的支持q东Q当然包含汉字)地区的文字,因此出现了许多外挂的软g补充Windows的不I中文之星是一个典型的、o国h自豪的YӞ监控软g也许要运用hook技术,此外Q很难想象什么Y件会用到hook。有人问我,能不能改变一个进E的数据处理行ؓQ我曄告诉他:能,也不能!感觉告诉我,hookl大多数场合下是一U“不CD”的行ؓ。曾有一D|_我的服务器,l常有h悄悄地近来,l我增加许多用户Q肆意修Ҏ的管理权限,我找到托商Q解决了q个问题Q那Ӟ我也C几本服务器监听、安全方面的书,看了几天Q我放弃了Qؓ什么?担心学坏Q正、邪仅在一念之差)Q其实,每个服务器都很脆弱,Ҏl验的系l程序员而言Q安全性与道d准则是联pd一LQY件技术上走邪路很ҎQ有时我会想Q如果我去设计病毒或者当黑客Q会怎样Q基数学n的我Q数论、组合学、密码理论统l不是问题,Windows虚拟驱动E序开发,也不是问题!Z么那么多的h兛_hookQ国人的正道软g寥寥无几Q可破解术却出神入化Q可惜,可惜Qhook是一U底层的~成机制Q能理解好hook的hQ完全具备掌握一技术的底蕴Q真希望回头…?<br /><br /><br /><br /><br /><br />MFC的批?<br />记得梁羽生先生笔下有一位正邪兼修的高手Q名曰“乔北溟”(好像是这个名字)Q一ơ此Z大侠张丹枫在一个庙中相遇,乔北溟随手操起香案上的香炉,张丹枫问他:“你的家伙称手吗??Q乔北溟W答Q“以吾辈之见识,q在意手中之物是否ؓ剑?”,张丹枫一愣,心中暗念Q此人果然不同凡响…?<br />说vMFCQ许多h都会撇撇_高手们会对其提出许多锐的批评,例如Q刻板的Document-View机制Q繁复的框架l构Q怪异的COM实现以及令h莫名其妙的宏Q等{。MFC的大而全Q不仅捆住了MFC开发组的手脚,也ؓ全面掌握MFC的愿望设|了障碍。高手们批评之余Q可能忽略了一个基本的事实Q这个事实就是,你的批评来自于你对MFC的深入理解,当许多h指出MFC的种U弱ҎQ他们或怸愿意承认Q他们的技高一{V见识超Z{是MFC带来的,不止一ơ有Z我谈及:“MFC的COM实现Q实在差Ԍ看看ATLQ不容否认,ATL至今仍然是开发COM的最佳C++cdQ,你就会感觉MFC的臃肎쀦…”,我们中的许多人潜意识里不知不觉的在作一件事Q“当我们借助一部梯子登上一层楼的时候,我们会评仯个梯子是如何如何之糟p。?999q_我的一个项目中需要一个描q引擎,VBSQVisual Basic ScriptQ,是个免费的语a引擎Q但功能局限极大,我联pM国的Summit公司Q他们很快寄来了Microsoft的Visual Basic for Application SDK 6.0Q当时我的团队可谓很强,其中的几位研I生C++修养很好Q拿到VBA SDKӞ他们Ҏ_“应当没问题Q我们很快就会搞定VBA SDK”,可是几天q去了,q个例子都没出来Q原来,虽然VBA SDK提供了MFC扩展cdQ基于模版机制的MFC/ATL合成cdQ,可实现得极其别扭Q我接手后的当天晚上QVBA 的IDE集成到pȝ中,W二天可~程对象利出现在VBA 的IDE中,其余得很奇怪,一看代码,原来我绕qMicrosoft的例子,完全是另外的实现途径Q那个时候,我感觉到QMicrosoftq个家伙真的可恶Q本来清晰的集成途径Q却Zؓ的让你绕来绕d加技术难度,q后xQ也可以理解Q不q样Q第三方的Summit何以作技术支持?我经常想Q如果没有商业利益,许多技术应当十分简z、高效,q一点,Microsoft以及其他大公叔R十分明白Q如果一切都是最佳的实现模式Q可能就另外一U局面了Q复变函数论中有一个著名的定理Q“复q面上处处解析的函数一定是常值函数。”, 学生们很隄解,当时我说Q如果把一个省几十个县的最好学生组成一个班会怎样Q结果是一定有一个较差的学生Q除非这个班只有一个学生!Q,q是个无法抗拒的定则Q你xQ用天下最好的20个菜形成的酒席是什么味道?那一定是最差的Q?<br />Microsoft的MFC是值得你学习和使用的,如果你讨厌这个东西或者你认ؓq是个邪恶的东西Q你学学乔北溟,实现正邪归一…?<br /><br /><br /><br /><br /><br />有感于“鸡兔同W?<br />女初到北京Ӟ对北京的教育颇ؓ不适,铺天盖地的数学奥赛培训班向她压过来,孩子真是辛苦。她四年U时Q就的对初等数论的基本内容进行强q性的熟悉Q还好,l过一D|间的努力Q掌握了“鸡兔同W”、“韩信点兵”等中国l典Q马马虎虎的能证明费马小定理Q有一天,奚w我:“爸爸,大学数学什么样Q还有‘鸡兔同W’吗Q”,我说Q有Q我Ҏ找了本老外写的《Basic Algebra》,扑ֈ其中的“中国剩余定理”,孩子接着问道Q“这本书中还有中国h的数学内容吗Q”,我在习题中给Ҏ到华|庚老先生的“反同构定理”,孩子又接着问:“还有吗Q”,我感到很没面子,因ؓ真的找不C…?<br />曄的一个梦Q就是当一个数学家Qؓ此,研究生时期买了大量的数学书,当时我们pȝ资料室是联合国教U文l织的藏书室Q可以说Q里面就是一个装满武功秘c的宝库。有一天我们打扫资料室的一个仓库,仓库里全是鼓鼓囊囊的麻袋包,上面落满灰尘Q手触摸一下,能粘出几毫米厚的灰尘Q可以想象有几年没有打扫了。同学无意中揭开一个麻袋,我们惊呆了,里面是美?0q代各大学的数学杂志Q每个杂志的名字都是响当当的Q那真叫如烟vQ当时我们就惻I我们的论文能发表到其中吗Q如果oq发了几,可想而知Q我们就可以当博gQ这些比国内所谓核心期刊有分量得多的杂志,像CSDN上的帖子一P很快׃被没了Q也许很久都不会有h参考、访问……,有一天,我也当了老师Q面临着U种考核Q于是,我们成了论文机器,不论是否有h|只要是核心的Q你高Z{。那个时候,我经常想起那些麻袋里的文献…?<br />我们整体水^的落后,D整体的Qw,数量上上MQ质量却下来了。若q年后,也许我成熟了Q我们这些曾l站在大学讲坛上的hQ没什么好的东西讲Q谈不上 ‘教’)l年ȝ学生Q记得当q我校的计算中心计划招个培训班,几天q去Q仅?人报名,W?人来Ӟ?人就退?人,MQ感到奇怪,问学生,学生不语Q其中原委ƈ不复杂。我发此帖ƈ没有_ֿ{划Q的如某些|友所a是随感而发Q“鸡兔同W”、“勾股定理”已l有了历史地位,如果仅仅够用Q我们住草房子一样保暖,Z建大厦呢Qؓ什么放弃传l的长袍、马褂而去I西装革履?病毒软g大战几乎是自杀性的内战Q没有撼动国外品的分毫Q我们许多h喜欢对自׃h说三道四Q是不是很少想一致对外?人家卖我们打折的产品Q条件是附加一份“忏悔书”,而执行者却是我们国人,Z么?因ؓ我们的东西匮乏!当年别h用钢铁武器掠Z我们的胦富,他们强大了,地痞无赖换上了绅士面孔,讲v了法律,当你用D版时Qh家文明的指责你,你的人力、胦力、物力统lؓ人所用,取之于你用之于你Q而我们却依然陉在“鸡兔同W”、“勾股定理”的历史成就之中Q我们依然喜Ƣ争论“勾股定理”谁发现得更早,π是谁最先精计的Q就像谈论C++谁的水^更高一栗?<br /><br />后记Q?<br /><br /><br /><br /><br /><br />为感谢CSDN|友的支?本h拟定陆箋增加几个新的帖子: <br />一、十qMFCl历认识的Microsoft开发技?多文档界面开发技术:此脓讨论一cd文档界面Q主H口是一个单文档界面Q如果你愿意Q你可以多文档H口作ؓȝ口的一个视图(CViewQ显C,q类多文档界面支持无限多个文档类型(卛_以加载Q意多个文档模板)Q支持(ZCOM?NETQ二ơ开发技术以及VBA集成Q?<br />二、十qMFCl历认识的Microsoft开发技?可视化文档界面设计技术:此脓讨论MFC Document/View 机制的可视化实现Q将l出一U所见即所得的Document/View 设计机制Q其中包含如何集成ActiveX Ctrl?NET User Control、MFC CViewcd象以形成一个MFCH体Q?<br />三、在MFCE序中如何有效的使用HTML、flashQ例如,可以实现flash动画作ؓ一个程序的Splash以增强程序的感染力,使用HTML、flash动画作ؓMDIE序的MDI用户区的背景{等……; <br />四、十qMFCl历认识的Microsoft开发技?MFC .NETlg开发技术:介绍如何使用MFCcd开?NETlgQ例如可以用MFC开发WinForm对象Q然后用于VB.NET、C#{等?<br /><br />如果大家有好的徏议,请与我联p(sunhui@mail.apptemplate.com、sunhuizlz@yeah.netQ?如果有北京的朋友肯帮忙协助,在下不胜感激Q希望得到大家的支持Q?/span></p> <img src ="http://www.shnenglu.com/wlwlxj/aggbug/15399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-11-18 22:26 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/11/18/15399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用MFC做VS起始늕?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/11/16/15259.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Thu, 16 Nov 2006 12:39:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/11/16/15259.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/15259.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/11/16/15259.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/15259.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/15259.html</trackback:ping><description><![CDATA[     摘要: 好的软g有好的开始,微YVS IDE的v始界面做的实在不错,色调和布局都是很舒服,q里我动手实C一?nbsp; <a href='http://www.shnenglu.com/wlwlxj/archive/2006/11/16/15259.html'>阅读全文</a><img src ="http://www.shnenglu.com/wlwlxj/aggbug/15259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-11-16 20:39 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/11/16/15259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC的容器站Ҏ件模?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/09/03/11998.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Sun, 03 Sep 2006 10:54:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/09/03/11998.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/11998.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/09/03/11998.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/11998.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/11998.html</trackback:ping><description><![CDATA[     摘要: 了解ActiveX控g创徏机制Q了解应用与ActiveX控g之间的模型,了解MFC背后为我们做了什?  <a href='http://www.shnenglu.com/wlwlxj/archive/2006/09/03/11998.html'>阅读全文</a><img src ="http://www.shnenglu.com/wlwlxj/aggbug/11998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-09-03 18:54 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/09/03/11998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC6的MFC应用中集成COM的一个小问题http://www.shnenglu.com/wlwlxj/archive/2006/09/01/11906.html万连?/dc:creator>万连?/author>Fri, 01 Sep 2006 00:18:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/09/01/11906.htmlhttp://www.shnenglu.com/wlwlxj/comments/11906.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/09/01/11906.html#Feedback1http://www.shnenglu.com/wlwlxj/comments/commentRss/11906.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/11906.html阅读全文

]]>
MFC应用集成老技术自动化(Automation)http://www.shnenglu.com/wlwlxj/archive/2006/08/31/11896.html万连?/dc:creator>万连?/author>Thu, 31 Aug 2006 12:33:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/08/31/11896.htmlhttp://www.shnenglu.com/wlwlxj/comments/11896.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/08/31/11896.html#Feedback6http://www.shnenglu.com/wlwlxj/comments/commentRss/11896.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/11896.html阅读全文

]]>
MFC应用集成VBA二次开?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/08/30/11871.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Wed, 30 Aug 2006 15:55:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/08/30/11871.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/11871.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/08/30/11871.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/11871.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/11871.html</trackback:ping><description><![CDATA[     摘要: VBA集成开发技术是一UY件系l扩展机Ӟ很多国外大型软g都支持VBA二次开?nbsp; <a href='http://www.shnenglu.com/wlwlxj/archive/2006/08/30/11871.html'>阅读全文</a><img src ="http://www.shnenglu.com/wlwlxj/aggbug/11871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-08-30 23:55 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/08/30/11871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BCG Skin插g机制研究q程http://www.shnenglu.com/wlwlxj/archive/2006/08/25/11674.html万连?/dc:creator>万连?/author>Thu, 24 Aug 2006 16:25:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/08/25/11674.htmlhttp://www.shnenglu.com/wlwlxj/comments/11674.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/08/25/11674.html#Feedback0http://www.shnenglu.com/wlwlxj/comments/commentRss/11674.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/11674.html阅读全文

]]>
TangramLiteW二弹-Q网作MDI背景实现E序交互http://www.shnenglu.com/wlwlxj/archive/2006/08/22/11572.html万连?/dc:creator>万连?/author>Tue, 22 Aug 2006 06:41:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/08/22/11572.htmlhttp://www.shnenglu.com/wlwlxj/comments/11572.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/08/22/11572.html#Feedback0http://www.shnenglu.com/wlwlxj/comments/commentRss/11572.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/11572.html阅读全文

]]>
MFC框架推荐Q-Tangramlitehttp://www.shnenglu.com/wlwlxj/archive/2006/08/21/11542.html万连?/dc:creator>万连?/author>Mon, 21 Aug 2006 14:09:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/08/21/11542.htmlhttp://www.shnenglu.com/wlwlxj/comments/11542.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/08/21/11542.html#Feedback3http://www.shnenglu.com/wlwlxj/comments/commentRss/11542.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/11542.html阅读全文

]]>
使MFC变漂亮二QMFC与HTML交互CZhttp://www.shnenglu.com/wlwlxj/archive/2006/07/22/10343.html万连?/dc:creator>万连?/author>Sat, 22 Jul 2006 08:51:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/07/22/10343.htmlhttp://www.shnenglu.com/wlwlxj/comments/10343.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/07/22/10343.html#Feedback5http://www.shnenglu.com/wlwlxj/comments/commentRss/10343.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/10343.html阅读全文

]]>
使MFC变漂亮一QMFC与Flash交互CZhttp://www.shnenglu.com/wlwlxj/archive/2006/07/19/10240.html万连?/dc:creator>万连?/author>Wed, 19 Jul 2006 14:47:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/07/19/10240.htmlhttp://www.shnenglu.com/wlwlxj/comments/10240.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/07/19/10240.html#Feedback4http://www.shnenglu.com/wlwlxj/comments/commentRss/10240.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/10240.html阅读全文

]]>
庖丁解MFCQ-Q二Q应用与框架的剥?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/07/08/9575.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Sat, 08 Jul 2006 06:42:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/07/08/9575.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/9575.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/07/08/9575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/9575.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/9575.html</trackback:ping><description><![CDATA[     摘要: 以无厚入有间Q恢恢乎其于游刃必有余地矣?nbsp; <a href='http://www.shnenglu.com/wlwlxj/archive/2006/07/08/9575.html'>阅读全文</a><img src ="http://www.shnenglu.com/wlwlxj/aggbug/9575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-07-08 14:42 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/07/08/9575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>庖丁解MFCQ-Q一Q文档视图与应用框架剥离http://www.shnenglu.com/wlwlxj/archive/2006/07/06/9476.html万连?/dc:creator>万连?/author>Thu, 06 Jul 2006 02:06:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/07/06/9476.htmlhttp://www.shnenglu.com/wlwlxj/comments/9476.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/07/06/9476.html#Feedback10http://www.shnenglu.com/wlwlxj/comments/commentRss/9476.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/9476.html阅读全文

]]>
MFC与ATL的男奛_p?/title><link>http://www.shnenglu.com/wlwlxj/archive/2006/07/03/9297.html</link><dc:creator>万连?/dc:creator><author>万连?/author><pubDate>Mon, 03 Jul 2006 00:21:00 GMT</pubDate><guid>http://www.shnenglu.com/wlwlxj/archive/2006/07/03/9297.html</guid><wfw:comment>http://www.shnenglu.com/wlwlxj/comments/9297.html</wfw:comment><comments>http://www.shnenglu.com/wlwlxj/archive/2006/07/03/9297.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/wlwlxj/comments/commentRss/9297.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wlwlxj/services/trackbacks/9297.html</trackback:ping><description><![CDATA[     摘要: MFC是一个男?ATL是一个女?nbsp; <a href='http://www.shnenglu.com/wlwlxj/archive/2006/07/03/9297.html'>阅读全文</a><img src ="http://www.shnenglu.com/wlwlxj/aggbug/9297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wlwlxj/" target="_blank">万连?/a> 2006-07-03 08:21 <a href="http://www.shnenglu.com/wlwlxj/archive/2006/07/03/9297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC集合cM用备忘录http://www.shnenglu.com/wlwlxj/archive/2006/03/04/3721.html万连?/dc:creator>万连?/author>Sat, 04 Mar 2006 12:14:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/03/04/3721.htmlhttp://www.shnenglu.com/wlwlxj/comments/3721.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/03/04/3721.html#Feedback0http://www.shnenglu.com/wlwlxj/comments/commentRss/3721.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/3721.html几个例子
msdnQ?font size="3">有关选择集合cȝ

]]>
MFC DLL实战http://www.shnenglu.com/wlwlxj/archive/2006/02/13/3243.html万连?/dc:creator>万连?/author>Mon, 13 Feb 2006 15:32:00 GMThttp://www.shnenglu.com/wlwlxj/archive/2006/02/13/3243.htmlhttp://www.shnenglu.com/wlwlxj/comments/3243.htmlhttp://www.shnenglu.com/wlwlxj/archive/2006/02/13/3243.html#Feedback2http://www.shnenglu.com/wlwlxj/comments/commentRss/3243.htmlhttp://www.shnenglu.com/wlwlxj/services/trackbacks/3243.html每次都ؓdll书写烦恼Q书写模式其实是固定的,下面׃步一步完全实C个动态库?br />1、选择MFC AppWizard(dll)Q项目名DemoQ默认完?br />2、新Zh文gDemoExp.hQ导出模块所有接口,新徏一cpp实现接口
3、在DemoExp.h中:
// 下面两行防止重复包含
#ifndef _DEMOEXP_H   (?可以是Q意的)
#define _DEMOEXP_H

// 下面一行预定义,在编译的时候定义_DEMOEXP把函数导?调用的时候没有定义则导出函数
#ifdef _DEMOEXP   (?可以是Q意的)
#define DEMOEXPAPI __declspec(dllexport)
#else
#define DEMOEXPAPI __declspec(dllimport)
#endif

// 导出函数接口
DEMOEXPAPI int ShowDlg();

// 调用的时候没有定义则自动q接
#ifndef _DEMOEXP   (?和上面一?
 #pragma comment(lib, "Demo.lib")
#endif

#endif

4、在DemoExp.cpp中先I实玎ͼ
#include "StdAfx.h"
#include "DemoExp.h"

DEMOEXPAPI int ShowDlg()
{
 return 0;
}
5、添加一对话?q生产类CDemoDlgc?br />6、在DemoExp.cpp中:
#include "DemoDlg.h"
修改函数如下Q?br />DEMOEXPAPI int ShowDlg()
{
 // 切换资源模块
 AFX_MANAGE_STATE(AfxGetStaticModuleState());

 CDemoDlg dlg;
 dlg.DoModal();
 return 0;
}
7、设|Setting->c/c++->Preprocessor definitions:d,_DEMOEXP;stdafx.h中添?include "Resource.h"
8、编译即生dll
9、添加一对话框程序测?具体?a href="/files/wlwlxj/demo.rar">CZ代码?/a>



]]>
yy6080þ| þɧ| ƷþþĻ| þþƷĻ23ҳ| ŷպƷþþѹۿ| þۺɫHEZYO| ޾þһ| þþƷһۺ| 99ƷþþƷ| ŷƷרþ| 뾫Ʒþþþþ| þ޹ҹƷƬ | þþƷƵ| þۺϾɫŷۺϺݺ| ŷպþþƷһ| þþƷ۲ӰԺ| ɫþþۺ| պþþþƷӰԺҳ| ˾Ʒþ| þþƷ18| ˾þþƷ| þþƷþһ| þþƷѹۿ97| 97Ʒ˾þô߽app| þþþþþþ˳| һaƬþëƬ16| 99þùں;Ʒ1ӳ| þseƷһƷ | Ʒþþþþù| ߳߳þþ| þҹ³˿Ƭϼ| þۺձ츾| þþþӰԺ| 99þþƷ鶹| 97ȾþƵƷ99| ˾þô߽AV| þþƷϵ| 99ƷۺϾþþþ| þþƷƷʢۿ| þþþþ˸߳ӰԺ| ޾Ʒþþþ66|