• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > WTL简单问题

WTL简单问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了wtl,wtl是什么意思,wtl 代理商哪家好,wtl 7019 gly2,wtl design等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: WTL简单问题
描述:

用WTL向导生成一个SDI程序,改变其中的viewXXXX文件如下.
// WtlNewMenuView.h : interface of the CWtlNewMenuView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_WTLNEWMENUVIEW_H__C340430A_ABD4_44FE_8F31_C1B45BCA52B6__INCLUDED_)
#define AFX_WTLNEWMENUVIEW_H__C340430A_ABD4_44FE_8F31_C1B45BCA52B6__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
template <class T, COLORREF t_crBrushColor>
class CPaintBkgnd : public CMessageMap
{
public:
    CPaintBkgnd() { m_hbrBkgnd = CreateSolidBrush(t_crBrushColor); }
    ~CPaintBkgnd() { DeleteObject ( m_hbrBkgnd ); }
    
        BEGIN_MSG_MAP(CPaintBkgnd)
            MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
        END_MSG_MAP()
        
        LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
        {
            T*   pT = static_cast<T*>(this);
            HDC  dc = (HDC) wParam;
            RECT rcClient;
        
            pT->GetClientRect ( &rcClient );
            FillRect ( dc, &rcClient, m_hbrBkgnd );
            return 1;    // we painted the background
        }
    
protected:
    HBRUSH m_hbrBkgnd;
};
class CWtlNewMenuView : public CWindowImpl<CWtlNewMenuView>,
                        public CPaintBkgnd<CWtlNewMenuView,RGB(200,0,0)>
{
public:
DECLARE_WND_CLASS(NULL)
BOOL PreTranslateMessage(MSG* pMsg);
    typedef CPaintBkgnd<CWtlNewMenuView, RGB(0,0,255)> CPaintBkgndBase;
BEGIN_MSG_MAP(CWtlNewMenuView)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
        CHAIN_MSG_MAP(CPaintBkgndBase)        
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_WTLNEWMENUVIEW_H__C340430A_ABD4_44FE_8F31_C1B45BCA52B6__INCLUDED_)
结果出现了三个相同的错误:
--------------------Configuration: WtlNewMenu - Win32 Debug--------------------
Compiling...
mainfrm.cpp
f:\临时目录\wtlnewmenu\wtlnewmenuview.h(48) : error C2352: 'CPaintBkgnd<class CWtlNewMenuView,16711680>::ProcessWindowMessage' : illegal call of non-static member function
        f:\临时目录\wtlnewmenu\wtlnewmenuview.h(19) : see declaration of 'ProcessWindowMessage'
Generating Code...
Compiling...
WtlNewMenu.cpp
f:\临时目录\wtlnewmenu\wtlnewmenuview.h(48) : error C2352: 'CPaintBkgnd<class CWtlNewMenuView,16711680>::ProcessWindowMessage' : illegal call of non-static member function
        f:\临时目录\wtlnewmenu\wtlnewmenuview.h(19) : see declaration of 'ProcessWindowMessage'
Generating Code...
Compiling...
WtlNewMenuview.cpp
f:\临时目录\wtlnewmenu\wtlnewmenuview.h(48) : error C2352: 'CPaintBkgnd<class CWtlNewMenuView,16711680>::ProcessWindowMessage' : illegal call of non-static member function
        f:\临时目录\wtlnewmenu\wtlnewmenuview.h(19) : see declaration of 'ProcessWindowMessage'
Generating Code...
Error executing cl.exe.
WtlNewMenu.exe - 3 error(s), 0 warning(s)
为什么出现这个错误?


解决方案1:

class CWtlNewMenuView : public CWindowImpl<CWtlNewMenuView>,
                        public CPaintBkgnd<CWtlNewMenuView,RGB(200,0,0)>
typedef CPaintBkgnd<CWTLAppView,RGB(200,0,0)> CPaintBkgndBase;
要一样都是RGB(200,0,0)参数要一样


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 看了一下WTL,对这个代码看不懂
  • 要用atl写个控件,涉及到界面的,怎么将wtl和atl结合起来用呐?用wtl来做控件的界面
  • 在ATL中使用WTL中的CFileDialog实现预览功能出现的不刷新问题,高手进
  • 使用WTL库,编译提示“cannotopenincludefile"atlresh"”,这是怎么回事?
  • WTL能否用于ATL做COM组件的界面?需要注意什么?
  • WTL中,怎么改变lineto画线的颜色和粗细?
  • WTL问题,MainFrame加一个Destory响应怎么会这样
  • 请大家帮忙看看这个:关于wtl
  • WTL,CCodePageCombo继承CComboBoxT<ATL::CWindow>类,需要响应下拉菜单CloseUp的消息
  • WTL下如何添加Mediaplayer控件

相关文章

  • 2017-06-05 如何使开启的进程在最上端显示
  • 2017-06-04 请高手帮忙:在COM中使用事件的问题
  • 2017-06-05 求助:关于isapi的问题,请高手指点~~~在线等
  • 2017-06-05 dll中函数调用的问题
  • 2017-06-05 所谓的ADO支持多线程是什么意思?
  • 2017-06-05 如何重载动态链接库中的类?
  • 2017-06-04 ATL做的Activex控件在作cab文件时有什么需要特别注意的?
  • 2017-06-04 如何在VC下开发一个应用在IE上的ACTIVEX关注有分
  • 2017-06-04 已经实现了灰掉WORD另存为菜单,但还有个问题
  • 2017-06-04 MMC编程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何在不启动Matlab的情况下,在vc中调用matlab实现绘图功能?
    • 編譯問題!為何我在win2000下用Win32ReleaseMinSize編輯一個DLL,不能在沒有vc環境的win98下注冊
    • 界面放置控件太多出现的问题
    • 卖儿买女求答案!解决一定吃大餐!
    • 如何获得控件的大小?
    • 关于MFC开发ActiveX控件的问题,急!
    • 线程,MUTEX和DLL之间居然产生了问题!
    • VC使用ODBC连接数据库增加一个字段出现错误
    • MFC使用Flash问题
    • ###问一个菜问题,ServerCreateObject,这星星是什么,我们自己写控件时,要在程序中规定什么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有