社区
C++ Builder
帖子详情
请问:如何使用控制TPanel控件的WM_PAINT事件?
bini
2003-10-09 01:10:22
BCB的新手,又暂时找不到书.来问高手同志们!
...全文
178
7
打赏
收藏
请问:如何使用控制TPanel控件的WM_PAINT事件?
BCB的新手,又暂时找不到书.来问高手同志们!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
COKING
2003-11-27
打赏
举报
回复
TWndMethod oldproc;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1:: newproc(TMessage &msg)
{
if(msg.Msg==WM_PAINT)
{
//your code
}
else
oldproc(msg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
oldproc= Panel1->WindowProc;
Panel1->WindowProc=newproc;
}
//---------------------------------------------------------------------------
BoyMgl
2003-11-26
打赏
举报
回复
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_PAINT, TMessage, WMPaintFun)
END_MESSAGE_MAP(TPanel)
bini
2003-11-26
打赏
举报
回复
前来结贴.
bini
2003-10-09
打赏
举报
回复
我想把OpenGL绘制到TPanel上.现在是有时能见,有时不能见.我想应该是TPanel本身的WM_PAINT有在动作.所以,我也不能在Application->OnIdle来重画.这可是占CPU 100%的.用Timer来间隔重画,也好象不太"正规"吧.占CPU也多.所以想控制其中TPanel的WM_PAINT.
bini
2003-10-09
打赏
举报
回复
这是主窗体的,我只想控制其中的子窗体的消息呢?
muta
2003-10-09
打赏
举报
回复
简略答一下你的问题 详细请翻阅BCB附带的Win32 SDK 有关Message的项目
Message处理是win32 Program的核心 我也无法一言以蔽之.下面是假设你的程式
开始于Form1
1)
代换BCB原定的Form1的讯息处理函式:
Form1->WindowProc = MyWndProc ;
2)
在MyWndProc中处理需要处理的讯息:
void __fastcall TForm1::MyWndProc(Messages::TMessage &Message)
{
switch(Message.Msg) {
case WM_PAINT:
: :
: : // 收到WM_PAINT讯息后的动作
: :
break ;
default :
WndProc(Message); // 不处理的讯息 由原定处理函式处理
break ;
}
}
3)
WM_PAINT 包含一个DC:
hdc = (HDC) wParam ;
可供你在画图时使用(PAINT事件大部分是要画图?)
fatwave
2003-10-09
打赏
举报
回复
写个消息机制将它给截下来!
拼图游戏Source
============ == pin tu == ============ language: delphi version: 0.02 author: tony (sudahei@citiz.net) date: 2002.01.13 introduction ============ 以前看到的拼图游戏大多是正方型的图块,而且很多甚至只有通过交换两个图块的位置来起到移动的作用,感觉和现实中的拼图实在是相差太远了,非常不舒服。 而前不久看到《三国赵云传》中副送的一个拼图游戏,它的图块是不规则边型的(有凹凸的边缘),又可以在窗口中随便拖动任何图块,这使我萌生了自己制作一个类似软件的想法。(之后又看到了一个名为bjig32的外国的拼图游戏,做得太好了,如果是在我开始开发这个程序前看到它的话,也许我就不会想着自己开发了,因为我看来是开发不出像它那么好的拼图游戏的。。。) how i implement it ================== 该游戏整个系统中包括两个我自己设计的类,TTuObj和TTuMng。 TTuObj -- 是指图块,即被切割后的一小块图片,它本身具有不规则的边界,并且可以响应鼠标的拖动
事件
,在它所在的容器中移动。我将该类设计为继承自TObject,然后在constructor中再分别生成一个T
Panel
和一个TImage(之所以不是继承自TControl或直接继承自T
Panel
,实在是因为我对
使用
vcl写
控件
还不是很熟悉,如果你可以的话,就改写一下吧),T
Panel
的作用是用来生成不规则边型的形状,因为TImage没有Handle,无法改变它的形状(我认为是这样的),而TImage用来显示图象和提供鼠标
事件
。另外每个TTuObj中还记录着它四周的TTuObj的指针,以及是否已经建立了连接,这样就可以提供能够判断两个图块是否在靠近时建立连接,以及当图块连接后移动任何一个图块都可以带动和它已连接的图块一起移动。 TTuMng -- 是拼图游戏的管理器,由它负责将一张完整的图片分割后生成一个个图块,集中管理它们,并负责判断是否所有的图块都连接起来了(即游戏结束)。 known bugs ========== 现在整个系统的效率还很低,特别是当移动图块时,闪烁非常厉害,我初步判定后认为,是因为当移动一个图块时,首先会引发该图块本身的
PAINT
事件
,然后会引发该图块所在容器的
PAINT
事件
,这样就意味着所有的图块都将被重绘一次,而不规则边型
控件
的重绘本来就是低效的,所以会找成如此闪烁。我尝试过自己处理TTuObj中AImage的
WM
_
PAINT
消息处理函数(就是当正在拖动图块时不允许重绘),但是发现在移动图块后,它经过的地方都留下了残像。而《三国赵云》中的拼图游戏是用directx写的,一点闪烁都没有,也许以后我会尝试用directx来写它。 hope u can join and improve it!!!!!! http://www.tonixsoft.com
Delphi获取
控件
界面图像“新招”
众所周知,Delphi是一种可视化编程方式的软件,在某些Delphi软件中,常常需要获取一些界面
控件
的图像,如TImage、T
Paint
Box、T
Panel
等
控件
。获取这些界面
控件
图像时,一般都是采用直接截屏的办法,但直接截屏的办法有一个缺陷,就是当这些
控件
完全或者部分被遮挡后,并不能获取其完整界面的图像。对TImage的截屏更是受到限制,因为除了BMP类型图像(即TImage.Pictu
Delphi组件的偷梁换柱
在
使用
Delphi可视化设计时,有时觉得某个元件缺少点自己需要的功能或者属性,或者需要的功能或者属性是protected,没法直接得到。比如T
Panel
,是个容器类组件,其功能是用来放置其它窗口组件和图形组件,但是,如果想在它的界面上画点什么就不那么方便了,既没有On
Paint
事件
,也不能直接获取其Canvas(该属性是protected)。 碰到这类问题,我们采用的策略一般有2
DBGrid 各属性的设置
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBGrid 缺省的外观未免显得单调和缺乏创意。其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目的。通过编程,我们可以改变 DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。
以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表格就像网页中的表格一样漂亮美观。
示例程序的运行:
在
BCB中使T
Panel
透明
/*从一个论坛发现的代码, 用代码是T
Panel
透明, 而不是重新写一个组件.*/// Unit1.h//---------------------------------------------------------------------------#ifndef Unit1H#define Unit1H//------------
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章