请问OnPaint与Paint的区别...

gloom 2001-08-29 09:42:50
请问什么时候会触发OnPaint事件?是不是改变对象的可见区域时触发的?Paint呢?
对象创建后是不是只触发Paint事件,而不触发OnPaint事件?
...全文
278 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloom 2001-09-01
  • 打赏
  • 举报
回复
我不能算完全明白,但也差不多了吧,结账
gloom 2001-09-01
  • 打赏
  • 举报
回复
谢谢大家了,
Nepalon 2001-08-31
  • 打赏
  • 举报
回复
onpaint是一个事件。而paint是一个消息,当重画一个窗体,或我们常用的刷新时,就要由窗口过程来调用paint这个消息。偶之拙见,是刚从windows程序设计中看的
whitelion 2001-08-30
  • 打赏
  • 举报
回复
up
fastcall 2001-08-30
  • 打赏
  • 举报
回复

下面这个例子应该可以帮助理解:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPaintBox *PaintBox1;
TButton *Button1;
TEdit *Edit1;
void __fastcall FormPaint(TObject *Sender);
void __fastcall PaintBox1Paint(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};




void __fastcall TForm1::FormPaint(TObject *Sender)
{
Edit1->Text ="FormPaint";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
Edit1->Text ="PaintBox1Paint;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
PaintBox1->OnPaint = PaintBox1Paint;
Form1->OnPaint =FormPant;
}
//---------------------------------------------------------------------------

HEROIN 2001-08-30
  • 打赏
  • 举报
回复
OnPaint只是一个事件,他通知有Paint这个事情发生了(应该说是完成了)

而Paint是用来执行界面绘制的
gloom 2001-08-30
  • 打赏
  • 举报
回复
那个主窗体即有OnPaint也有Paint啊,怎么区别
fastcall 2001-08-30
  • 打赏
  • 举报
回复
Onpaint和paint()是有区别的:
例如:Lable 是 From1上的一个元件则OnPint指向From1上的一个成员函数,即她是一个函数指针她只向父窗口同类型的函数,而Paint()是Lable 的一个成员函数,他处理WM_PAINT消息并负责调用OnPaint 函数指针所指向的函数。WM_PAINT是在窗口刷新时产生的
gloom 2001-08-29
  • 打赏
  • 举报
回复
好像是我在提问耶...
孩皮妞野 2001-08-29
  • 打赏
  • 举报
回复
基本同意gloom, OnPaint()是事件, Paint是一个相当于C++虚函数的东西。DYNAMIC = dynamic, 关于其意义可以参考帮助, 大体上dynamic 会首先查找类中有否定义,否则就
严派生链上溯,直到找到一个定义。

gloom 2001-08-29
  • 打赏
  • 举报
回复
谢了,ccaolii(ccaolii) 
ccaolii 2001-08-29
  • 打赏
  • 举报
回复
生日快乐 gloom(忧郁的海风) 
gloom 2001-08-29
  • 打赏
  • 举报
回复
下面是原型,它是专门响应WM_PAINT消息的,这个Paint应该不算是事件,是一个函数,要想自己重载的话要加上DYNAMIC.我也不知道说得对不对,
DYNAMIC void __fastcall Paint();
HEROIN 2001-08-29
  • 打赏
  • 举报
回复
惭愧,我不知道除了OnPaint外还有个Paint事件,能不能告诉我在那里?我怎找不到?

另外,OnPaint并非创建时触发,正如你说的,是改变对象的可见区域时触发
gloom 2001-08-29
  • 打赏
  • 举报
回复
哪些情况会触发WM_Paint?移动对象会触发吗?
gloom 2001-08-29
  • 打赏
  • 举报
回复
要上班啊,怎么能不看程序啊
greenhandsecond 2001-08-29
  • 打赏
  • 举报
回复
我在过生日的时候就不肯看程序,更不肯想问题。
不过你的问题挺有创意的。
gqxs 2001-08-29
  • 打赏
  • 举报
回复
学习
gloom 2001-08-29
  • 打赏
  • 举报
回复
我在做ActiveX时就可以重载Paint()
HEROIN 2001-08-29
  • 打赏
  • 举报
回复
虚拟函数也不必一定要DYNAMIC

不过除非你自己写控件,否则你是无法重载Paint的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧