CButtonST在SDI中的CView中使用,请大家进来讨论一下。 怎么很多功能不能使用?例如SetIcon, SetCursor等. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我从CWnd派生一个类CPanel,现在我想让CPanel能显示超链接方式的文字,// Panel.h: interface for the CPanel class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_)#define AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CPanel : public CWnd { DECLARE_DYNAMIC(CPanel)public: CPanel(); virtual ~CPanel();public: BOOL Create(const CRect &rect, CWnd *pParent, UINT nID, DWORD dwStyle=WS_CHILD|WS_VISIBLE); void SetBkColor(COLORREF crBack); // 设置背景色 void SetBkBitmap(UINT nID); // 设置背景位图protected: void OnPaint(); DECLARE_MESSAGE_MAP()private: COLORREF m_bkColor; CBitmap m_bmpBackground; CString m_strTip;};#endif // !defined(AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_) // Panel.cpp: implementation of the CPanel class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "Phone.h"#include "Panel.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////IMPLEMENT_DYNAMIC(CPanel, CWnd)BEGIN_MESSAGE_MAP(CPanel, CWnd)//{{AFX_MSG_MAP(CPanel)ON_WM_PAINT()//}}AFX_MSG_MAPEND_MESSAGE_MAP()CPanel::CPanel(){ m_bkColor = RGB(0, 0, 0); m_bmpBackground.m_hObject = NULL; m_strTip = "";}CPanel::~CPanel(){}BOOL CPanel::Create(const CRect &rect, CWnd *pParent, UINT nID, DWORD dwStyle){ CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, AfxGetApp()->LoadStandardCursor(IDC_ARROW)); BOOL bRet = CWnd::Create(className, "", dwStyle, rect, pParent, nID); if( !bRet ) return FALSE; return TRUE;}void CPanel::OnPaint(){ CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CRect rectClient(0,0,0,0); dc.GetClipBox(rectClient); rectClient.NormalizeRect(); if (rectClient.IsRectEmpty()) { return; } GetClientRect(rectClient); CBrush brush; brush.CreateSolidBrush(m_bkColor); dc.FillRect(rectClient, &brush); brush.DeleteObject(); if(m_bmpBackground.m_hObject != NULL) { CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap *oldBmp = memDC.SelectObject(&m_bmpBackground); BITMAP bm; m_bmpBackground.GetBitmap(&bm); dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY); memDC.SelectObject(oldBmp); memDC.DeleteDC(); } CPen pen; pen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); CPen *oldPen = dc.SelectObject(&pen); int OldMode = dc.SetBkMode(TRANSPARENT); dc.DrawText("你好!", 4, rectClient, DT_CALCRECT); dc.SetBkMode(OldMode); dc.SelectObject(oldPen); }void CPanel::SetBkColor(COLORREF crBack){ m_bkColor = crBack;}void CPanel::SetBkBitmap(UINT nID){ m_bmpBackground.LoadBitmap(nID);} mfc tree控件响应不了NM_CLICK 单击双击事件 为什么? 动态生成的控件如何响应右键单击事件? 文件打包 传输文件,C++类里定义DIALOG类的问题 在创建FRAME窗口的时候,如何显示或隐藏标题栏 如果不知道模块名,如果获得这个模块的字符串资源? 如果获得鼠标左键释放时鼠标所在的当前位置? CODER的未来??? MFC使用 odbc连接Access,怎么才可以不要注册数据源就可以拉 急 !!!!MFC42D.DLL的问题[没有分给了 SORRY] 鉴于一些人可用分太少,并且鼓励结贴,现评选VC/MFC版面技术问题最多的网友和大手大脚奖 把图象保存为8位深度的PNG图象
// Panel.h: interface for the CPanel class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_)
#define AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CPanel : public CWnd
{
DECLARE_DYNAMIC(CPanel)
public:
CPanel();
virtual ~CPanel();
public:
BOOL Create(const CRect &rect, CWnd *pParent, UINT nID, DWORD dwStyle=WS_CHILD|WS_VISIBLE);
void SetBkColor(COLORREF crBack); // 设置背景色
void SetBkBitmap(UINT nID); // 设置背景位图
protected:
void OnPaint();
DECLARE_MESSAGE_MAP()
private:
COLORREF m_bkColor;
CBitmap m_bmpBackground;
CString m_strTip;
};#endif // !defined(AFX_PANEL_H__E6AA09E1_2766_4B3A_B9F4_ACF7EAC14116__INCLUDED_)
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "Phone.h"
#include "Panel.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CPanel, CWnd)
BEGIN_MESSAGE_MAP(CPanel, CWnd)
//{{AFX_MSG_MAP(CPanel)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CPanel::CPanel()
{
m_bkColor = RGB(0, 0, 0);
m_bmpBackground.m_hObject = NULL;
m_strTip = "";}CPanel::~CPanel()
{}BOOL CPanel::Create(const CRect &rect, CWnd *pParent, UINT nID, DWORD dwStyle)
{
CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, AfxGetApp()->LoadStandardCursor(IDC_ARROW));
BOOL bRet = CWnd::Create(className, "", dwStyle, rect, pParent, nID);
if( !bRet )
return FALSE; return TRUE;
}void CPanel::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rectClient(0,0,0,0);
dc.GetClipBox(rectClient);
rectClient.NormalizeRect();
if (rectClient.IsRectEmpty())
{
return;
} GetClientRect(rectClient);
CBrush brush;
brush.CreateSolidBrush(m_bkColor);
dc.FillRect(rectClient, &brush);
brush.DeleteObject(); if(m_bmpBackground.m_hObject != NULL)
{
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *oldBmp = memDC.SelectObject(&m_bmpBackground);
BITMAP bm;
m_bmpBackground.GetBitmap(&bm);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(oldBmp);
memDC.DeleteDC();
}
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
CPen *oldPen = dc.SelectObject(&pen);
int OldMode = dc.SetBkMode(TRANSPARENT);
dc.DrawText("你好!", 4, rectClient, DT_CALCRECT);
dc.SetBkMode(OldMode);
dc.SelectObject(oldPen);
}
void CPanel::SetBkColor(COLORREF crBack)
{
m_bkColor = crBack;
}
void CPanel::SetBkBitmap(UINT nID)
{
m_bmpBackground.LoadBitmap(nID);
}