返回首页

{A}指数{A4}{A5}{A6}{A7}{A8}{A9}{A10}{S0}{A11}
良好的用户界面是一个良好的应用,除了其他标准,如性能,稳定性/可靠性的重要组成部分... ...就个人而言,我真的很喜欢很久以前在CodeProject上公布的以下库。{A12}丹尼尔宝云{A13}由Sergey克里莫夫{A14}由Igor Katrayev
这些上市图书馆都写在WTL。但它真的很难混合MFC放大器; WTL的一起。显然,它的不合理的来问一个开发者或团队给予最多的MFC和移动WTL的世界只是因为有一些很大的控制或视觉框架写在WTL(有,应该是特别是在一家公司认为有数百很多东西像我工作的公司开发)。不幸的是,到现在为止没有这样好的免费在MFC中的视觉框架。有任何困难,我仍然渴望能够使用他们,现在我的努力是在这里与您共享。{A15}技术决策
有两种可能的方法:移植到MFC的WTL的源代码完全:这种方法有一些问题。首先,它会带我很多的时间(只是重新写的是什么人做过)。二,错误修复和加强从原来的作者不会是最新的。第三,我再次到端口,另一个很好的WTL的针对性库,如果有一天公布。因着这样的原因,我决定不遵循这个方向。MFC放大器; WTL的混合在一起。我知道有很多问题,在论坛的文章{A16}所示这种方法。由于我没有野心,有一个通用的方式来整合所有的WTL的针对性库(现在和将来),但上述这些只是,我相信这是可能的。它是如何工作?
下面是MFC包装的核心:

template<class TMFCWnd, class TWTLCWindow>

class ATL_NO_VTABLE CWTL4MFCWndT : public TMFCWnd

{

public:

    typedef TWTLCWindow WTLClass;

    WTLClass m_wndWTLPeer;



    virtual void PreSubclassWindow()

    {

        m_wndWTLPeer.m_hWnd = m_hWnd;

        __super::PreSubclassWindow();

    }



    virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam)

    {

        LRESULT lResult = 0;

        if(FALSE == m_wndWTLPeer.ProcessWindowMessage

            (m_hWnd, nMsg, wParam, lParam, lResult))

        {

            ASSERT(::IsWindow(m_hWnd));

            lResult = TMFCWnd::WindowProc(nMsg, wParam, lParam);

        }

        return lResult;

    }



    __if_exists(TWTLCWindow::PreTranslateMessage) {

    virtual BOOL PreTranslateMessage(MSG* pMsg)

    {

        BOOL blRes1 = __super::PreTranslateMessage(pMsg);

        BOOL blRes2 = m_wndWTLPeer.PreTranslateMessage(pMsg);



        // if both WTL & MFC handle this message

        // there maybe a problem, consider to override 

        // this method in derived class

        ASSERT(FALSE == (blRes2 && blRes1));



        return (blRes1 | blRes2);

    }}

};

不多说,每个窗口消息(WM_xxx),如果不处理相应的WTL的同行,MFC包装。潜在的问题
问题时,会出现一个窗口消息(WM_xxx)WTL的同行(从ProcessWindowMessage返回TRUE),但该消息也为MFC框架的重要处理。要解决这个问题,我会选择一个非常简单的方法:做测试和情况下,解决方法的情况下。{A17}
应用到现有的MFC项目库是很容易的,让我们来看看你的出发点示范项目。下面是类图的快速参考。{A18}Visual Studio 2003中Visual Studio 2005中 - 由于在这个版本的编译器一些变化,让{A19} 200或更高的价值,以避免错误C3859{A20}基本上,错误或要求更多的功能,可能属于这个MFC包装(1)或WTL的原代码(2)或(3)。我会尝试修复错误,属于类(1)和(3),并提出其他的通讯作者(我会尽量不触及尽可能WTL代码,除非它真的有必要与原作者同意,当然)由于这只是一个包装库,请记住从其他作者的更新和{A21}太{A22}
我想感谢他们出色的WTL的针对性库{A23}。也感谢他们的同意,让我在这篇文章中重新分配他们的源代码(稍加修改)。{A24}2007年10月12日:初始版本

回答

评论会员:Panic2k3 时间:2011/12/15
严重命名的文章(应该是指使用的WTL),并试图解释到MFC的WTL的混合文章本身不是建议的对接框架...
评论会员:游客 时间:2011/12/15
会员4287659:|不支持??D:\mfcdockingframework_20071012\dockingframework\dockingframework.cpp(60):错误C2248:"WTL::dockwins:CDockingWindowBaseImpllt;T,TBASE,TWinTraitsgt:CDocker":不能访问私有的typedef在类的WTL的声明:dockwins:CDockingWindowBaseImpllt,T,TBASE,TWinTraitsgt'Ž
阮琼
评论会员:游客 时间:2011/12/15
哪些是您正在使用的C编译器
?SM_Leon:此错误发生时,我trye​​d编译MFC对接框架代码使用Visual stdio的2008,所以如何解决这个问题
评论会员:?extremjoy 时间:2011/12/15
您可以添加"公众:"这样的dockingwindow.h:

市民:
的typedef CWindowImpllt,T,TBASE,TWinTraits GT;基类
的typedef CDockingWindowBaseImpllt,T,TBASE,TWinTraits GT; thisClass
的typedef typename的TWinTraits:CDocker CDocker;
评论会员:abc_nus_student 时间:2011/12/15
您好,
需要一些帮助。
有谁知道怎么做下面的

1。收集所有微软的操作系统提供的消息,以绘制按钮或菜单等应用程序的屏幕(例如对于Microsoft Word)

2。采取上述消息,并投入另一个定制的应用程序窗口映射窗口句柄后,让您重新创建完全相同的应用程序在不同的应用程序窗口。

谢谢!
ABC
评论会员:游客 时间:2011/12/15
PetoG:|嗨,我不能够在VS2003编译MDIDemo项目。我:C:\\CodeProject上\可停靠窗口DockingFramework\对接框架\\WTL4MFC.h(36):致命错误C1083:无法打开包括文件:"atlapp.h":没有这样的文件或目录怎么办呢?彼得
琼阮
评论会员:游客 时间:2011/12/15
我们需要的WTL编译演示,在这里获得{A25}
qiuyangsky
评论会员:游客 时间:2011/12/15
我已经包含到项目的WTL的,但我不能编译为原因如下:"FATA错误:无法打开包括文件"sal.h"我应该怎么办?谢谢!{S2}
会员4492285
评论会员:游客 时间:2011/12/15
FATA错误C1083:无法打开包括文件
会员4492285
评论会员:游客 时间:2011/12/15
FATA错误:无法打开包括文件
code_discuss
评论会员:游客 时间:2011/12/15
会更好如果你在文章中解释的更多细节。imgsrc=http://www.orcode.com/upimg/2011_12_15_04_19_08_3.gif
琼阮
评论会员:游客 时间:2011/12/15
我同意的文章很短,需要更详细然而,让我知道什么样的信息你英寸感兴趣