30 个解决方案
#1
CMyStatic中添加了WM_PAINT事件
先不要 WM_PAINT事件 试试
先不要 WM_PAINT事件 试试
#2
我是用的mfc自动生成的WM_PAINT事件,我没有添加任何代码,删除这个事件,就能显示,我想知道为什么。
#3
如果你响应了WM_PAINT事件,"我没有添加任何代码" ,你必须写代码.不写就没东西被 paint !
#4
那mfc中自带的CStatic怎么向静态文中控件中的添加的文本呢,他们也没有在WM_Paint消息中天剑任何东西。
#5
那mfc中自带的CStatic怎么向静态控件中的添加的文本呢,他们也没有在WM_Paint消息中添加任何东西。
#6
“我没有添加任何代码”的意思是事件里面的代码都是mfc默认生成的,我没有修改。
#7
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
#8
void CWnd::OnPaint()还是没有作用,不知道什么原因,我对mfc了解不多,希望给予解答,多谢了。
{
if (m_pCtrlCont != NULL)
{
// Paint windowless controls
CPaintDC dc(this);
m_pCtrlCont->OnPaint(&dc);
}
Default();
}
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}
#9
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
那怎么我在CMyStatic中的OnPaint()添加了系统默认的CWnd::OnPaint();这个CWnd::OnPaint()就是调用了系统默认的处理函数
void CWnd::OnPaint()
{
if (m_pCtrlCont != NULL)
{
// Paint windowless controls
CPaintDC dc(this);
m_pCtrlCont->OnPaint(&dc);
}
Default();
}
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}
还是没有作用,不知道什么原因,我对mfc了解不多,希望给予解答,多谢了。
#10
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
#11
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
#12
把 CPaintDC dc(this);这句注释掉即可显示..
#13
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
你给的方法,我试了,显示,帮忙分析一下什么原因,如果满意了,我会追加分数的。
#14
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
你给的方法,我试了,显示,帮忙分析一下什么原因,如果满意了,我会追加分数的。
说错了,不显示,你可以自己试一试。
#15
把 CPaintDC dc(this);这句注释掉即可显示..
注释掉,还是不显示,帮忙分析一下什么原因导致的不显示,怎么解决,如果满意了,我会追加分数的。
#16
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
+1
#17
#pragma once
// CUIStatic
class CUIStatic : public CWnd
{
DECLARE_DYNAMIC(CUIStatic)
public:
CUIStatic();
virtual ~CUIStatic();
CString szText;
BOOL bShowFrame;
COLORREF FrameColor;
protected:
DECLARE_MESSAGE_MAP()
virtual void PreSubclassWindow();
public:
afx_msg void OnPaint();
int m_font_size;
void Set_Font_Size(int size);
void SetText(CString & sz_Text);
};
// UIStatic.cpp : 实现文件
//
#include "stdafx.h"
#include "UIStatic.h"
// CUIStatic
IMPLEMENT_DYNAMIC(CUIStatic, CWnd)
CUIStatic::CUIStatic()
{
m_font_size = 120;
FrameColor = RGB(12, 100, 189);
bShowFrame = TRUE;
}
CUIStatic::~CUIStatic()
{
}
BEGIN_MESSAGE_MAP(CUIStatic, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
// CUIStatic 消息处理程序
void CUIStatic::PreSubclassWindow()
{
ModifyStyle(0,SS_OWNERDRAW | WS_TABSTOP);
CWnd::PreSubclassWindow();
}
void CUIStatic::Set_Font_Size(int size)
{
m_font_size = size;
}
void CUIStatic::SetText(CString & sz_Text)
{
szText = sz_Text;
Invalidate();
}
void CUIStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rc;
GetClientRect(rc);
//是否显示边框,比如时钟就没有边框
if(bShowFrame)
{
CPen pen,*pOldPen;
pen.CreatePen(PS_SOLID, 2, FrameColor);
pOldPen = dc.SelectObject(&pen);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush *pOldBrush = dc.SelectObject(pBrush);//选入设备描述表
dc.RoundRect(&rc,CPoint(5,5));
dc.SelectObject(pOldPen);
pen.DeleteObject();
}
if(szText.IsEmpty())
return;
CFont font,*pOldFont;
font.CreatePointFont(m_font_size, szFontName);
pOldFont = dc.SelectObject(&font);
CSize szEd = dc.GetTextExtent(szText);
CPoint pt((rc.right - szEd.cx) / 2,(rc.bottom - szEd.cy) /2);
dc.SetBkMode(TRANSPARENT);
// dc.SetBkColor(RGB(20, 130, 228));
dc.SetTextColor(RGB(0,0,0));
dc.TextOut(pt.x,pt.y,szText);
dc.SelectObject(pOldFont);
font.DeleteObject();
//
}
这个是我之前写的一个,用settext添加文字
#18
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
+1
那我在这个事件里添加了系统默认的函数,为什么还是不显示。
#19
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
#20
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
你自己可以试一下,调用默认的也没有效果。
#21
“我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的”
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
#23
class CMyStatic : public CStatic
{
DECLARE_DYNAMIC(CMyStatic)
public:
CMyStatic();
virtual ~CMyStatic();
DECLARE_MESSAGE_MAP()
public:
COLORREF m_clrText;
COLORREF m_clrBk;
CBrush m_bkBrush;
public:
afx_msg HBRUSH CtlColor(CDC* pDC, UINT /*nCtlColor*/);
void SetBkColor(COLORREF clrBk);
void SetTextColor(COLORREF clrText);
};
#24
“我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的”
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
我试了,删除是可以的,我现在想找出真正的不显示的原因,而不是说解决办法。你说调用默认的就可以显示,我在这个函数中添加了默认的处理,怎么不显示。
#25
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
#26
我重建工程,最简单的工程,添加了这段代码,还是没效果,大神如果不相信的话,可以自己试一试,我只想找到真正的原因。
#27
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
我重建工程,最简单的工程,添加了这段代码,还是没效果,大神如果不相信的话,可以自己试一试,我只想找到真正的原因。
#28
没办法只好自己试试。
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
#29
没办法只好自己试试。
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
确实可以了,CPaintDC导致擦除,多谢了。
#30
其实12 楼已经说了,只是你 没注意.
#1
CMyStatic中添加了WM_PAINT事件
先不要 WM_PAINT事件 试试
先不要 WM_PAINT事件 试试
#2
CMyStatic中添加了WM_PAINT事件
先不要 WM_PAINT事件 试试
我是用的mfc自动生成的WM_PAINT事件,我没有添加任何代码,删除这个事件,就能显示,我想知道为什么。
#3
如果你响应了WM_PAINT事件,"我没有添加任何代码" ,你必须写代码.不写就没东西被 paint !
#4
那mfc中自带的CStatic怎么向静态文中控件中的添加的文本呢,他们也没有在WM_Paint消息中天剑任何东西。
#5
如果你响应了WM_PAINT事件,"我没有添加任何代码" ,你必须写代码.不写就没东西被 paint !
那mfc中自带的CStatic怎么向静态控件中的添加的文本呢,他们也没有在WM_Paint消息中添加任何东西。
#6
如果你响应了WM_PAINT事件,"我没有添加任何代码" ,你必须写代码.不写就没东西被 paint !
那mfc中自带的CStatic怎么向静态控件中的添加的文本呢,他们也没有在WM_Paint消息中添加任何东西。
“我没有添加任何代码”的意思是事件里面的代码都是mfc默认生成的,我没有修改。
#7
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
#8
void CWnd::OnPaint()还是没有作用,不知道什么原因,我对mfc了解不多,希望给予解答,多谢了。
{
if (m_pCtrlCont != NULL)
{
// Paint windowless controls
CPaintDC dc(this);
m_pCtrlCont->OnPaint(&dc);
}
Default();
}
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}
#9
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
那怎么我在CMyStatic中的OnPaint()添加了系统默认的CWnd::OnPaint();这个CWnd::OnPaint()就是调用了系统默认的处理函数
void CWnd::OnPaint()
{
if (m_pCtrlCont != NULL)
{
// Paint windowless controls
CPaintDC dc(this);
m_pCtrlCont->OnPaint(&dc);
}
Default();
}
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}
还是没有作用,不知道什么原因,我对mfc了解不多,希望给予解答,多谢了。
#10
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
#11
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
#12
把 CPaintDC dc(this);这句注释掉即可显示..
#13
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
你给的方法,我试了,显示,帮忙分析一下什么原因,如果满意了,我会追加分数的。
#14
CMyStatic窗体类,继承自CStatic,并且我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的,我什么也没有修改,然后我在对话框中关联了一个CMyStatic m_staticTest变量,并且在OnInitDialog()虚函数中添加了m_staticTest.SetWindowText("test");一行代码,编译,运行,静态文本中的文字没有显示,什么原因,请大神给解答。
m_staticTest.SetWindowText("test"); 之后 m_staticTest.Invalidate()一下。
你给的方法,我试了,显示,帮忙分析一下什么原因,如果满意了,我会追加分数的。
说错了,不显示,你可以自己试一试。
#15
把 CPaintDC dc(this);这句注释掉即可显示..
注释掉,还是不显示,帮忙分析一下什么原因导致的不显示,怎么解决,如果满意了,我会追加分数的。
#16
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
+1
#17
#pragma once
// CUIStatic
class CUIStatic : public CWnd
{
DECLARE_DYNAMIC(CUIStatic)
public:
CUIStatic();
virtual ~CUIStatic();
CString szText;
BOOL bShowFrame;
COLORREF FrameColor;
protected:
DECLARE_MESSAGE_MAP()
virtual void PreSubclassWindow();
public:
afx_msg void OnPaint();
int m_font_size;
void Set_Font_Size(int size);
void SetText(CString & sz_Text);
};
// UIStatic.cpp : 实现文件
//
#include "stdafx.h"
#include "UIStatic.h"
// CUIStatic
IMPLEMENT_DYNAMIC(CUIStatic, CWnd)
CUIStatic::CUIStatic()
{
m_font_size = 120;
FrameColor = RGB(12, 100, 189);
bShowFrame = TRUE;
}
CUIStatic::~CUIStatic()
{
}
BEGIN_MESSAGE_MAP(CUIStatic, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
// CUIStatic 消息处理程序
void CUIStatic::PreSubclassWindow()
{
ModifyStyle(0,SS_OWNERDRAW | WS_TABSTOP);
CWnd::PreSubclassWindow();
}
void CUIStatic::Set_Font_Size(int size)
{
m_font_size = size;
}
void CUIStatic::SetText(CString & sz_Text)
{
szText = sz_Text;
Invalidate();
}
void CUIStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rc;
GetClientRect(rc);
//是否显示边框,比如时钟就没有边框
if(bShowFrame)
{
CPen pen,*pOldPen;
pen.CreatePen(PS_SOLID, 2, FrameColor);
pOldPen = dc.SelectObject(&pen);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush *pOldBrush = dc.SelectObject(pBrush);//选入设备描述表
dc.RoundRect(&rc,CPoint(5,5));
dc.SelectObject(pOldPen);
pen.DeleteObject();
}
if(szText.IsEmpty())
return;
CFont font,*pOldFont;
font.CreatePointFont(m_font_size, szFontName);
pOldFont = dc.SelectObject(&font);
CSize szEd = dc.GetTextExtent(szText);
CPoint pt((rc.right - szEd.cx) / 2,(rc.bottom - szEd.cy) /2);
dc.SetBkMode(TRANSPARENT);
// dc.SetBkColor(RGB(20, 130, 228));
dc.SetTextColor(RGB(0,0,0));
dc.TextOut(pt.x,pt.y,szText);
dc.SelectObject(pOldFont);
font.DeleteObject();
//
}
这个是我之前写的一个,用settext添加文字
#18
有个概念要搞清楚.
你响应了WM_PAINT事件, 表示 你要 自己控制Paint过程,系统就不会调默认的piant.
所以不响应 WM_PAINT事件, 就是系统调用默认的OnPaint 函数.
MFC SDK 都要注意,
你响应了WM_PAINT事件,就一定要写Paint内容.
+1
那我在这个事件里添加了系统默认的函数,为什么还是不显示。
#19
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
#20
函数是,没有什么 CWnd !!
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
不能没有 CStatic::OnPaint(); 这就是 默认的paint
你自己可以试一下,调用默认的也没有效果。
#21
“我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的”
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
#22
#23
class CMyStatic : public CStatic
{
DECLARE_DYNAMIC(CMyStatic)
public:
CMyStatic();
virtual ~CMyStatic();
DECLARE_MESSAGE_MAP()
public:
COLORREF m_clrText;
COLORREF m_clrBk;
CBrush m_bkBrush;
public:
afx_msg HBRUSH CtlColor(CDC* pDC, UINT /*nCtlColor*/);
void SetBkColor(COLORREF clrBk);
void SetTextColor(COLORREF clrText);
};
#24
“我在CMyStatic中添加了WM_PAINT事件,这个事件是mfc自动生成的”
这个事件是mfc 不会 自动生成的
你把它 删除 看看。
我试了,删除是可以的,我现在想找出真正的不显示的原因,而不是说解决办法。你说调用默认的就可以显示,我在这个函数中添加了默认的处理,怎么不显示。
#25
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
#26
我重建工程,最简单的工程,添加了这段代码,还是没效果,大神如果不相信的话,可以自己试一试,我只想找到真正的原因。
#27
void CMyStatic::OnPaint()
{
CStatic::OnPaint();// 调父类
}
没用?
是不是被 其他窗口覆盖了.
简化工程 , 重来.
我重建工程,最简单的工程,添加了这段代码,还是没效果,大神如果不相信的话,可以自己试一试,我只想找到真正的原因。
#28
没办法只好自己试试。
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
#29
没办法只好自己试试。
在 CMyStatic 中 用 向导插入 WM_PAINT 消息 后,向导的代码是:
void CMyStatic::OnPaint()
{
CPaintDC dc(this);
// do not call CStatic::OnPaint() for piant
}
你要改成:
void CMyStatic::OnPaint()
{
// CPaintDC dc(this); // 这句 一定 要 去掉, 因为 这句 会 使 客户区 背景刷除,同时使客户区有效, 再 OnPaint 就 没用 了 ,(Onpaint 只对 无效 客户区)才有用
// do not call
CStatic::OnPaint();// 调父类
}
确实可以了,CPaintDC导致擦除,多谢了。
#30
其实12 楼已经说了,只是你 没注意.