BSD2007 制作特殊窗口!

介绍使用BDS2007简化创建特殊形状窗口的过程,包括设置透明色、处理消息等,并提供实现拖动功能的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用VC6及BCB6创建特殊形状的窗口,还是相对麻烦的,现在BDS2007来了,操作起来简单多了!跟VS2005操作基本相同.通过设置透明色来实现.显示速度比自己用算法得出的还要快一些!

 步骤:

创建一个窗体,放上一个TImage,找一个图形文件!将Image的align属性设置client,窗体边框设置为None,即无边框.

编译运行!如图!

图像周边的一些细节要处理好,不然有上图那些不平滑之处!

 另外还要添加处理消息,比如关闭,退出.还有拖动!

以下代码实现拖动:

在头文件添加:

 

public:        // User declarations
        void __fastcall OnNcHitTest(TMessage &Message);
public// User declarations
        BEGIN_MESSAGE_MAP
          VCL_MESSAGE_HANDLER(WM_NCHITTEST,TMessage,OnNcHitTest);
      END_MESSAGE_MAP(TForm);

在实现文件添加函数的实现:

 

void __fastcall TForm1::OnNcHitTest(TMessage &Message)
{
    Message.Result
=HTCAPTION;
    
return;
    TPoint PT;
    PT.x
=LOWORD(Message.LParam);
    PT.y
=HIWORD(Message.LParam);
    PT
=ScreenToClient(PT);
    RECT rect;
    ::SetRect(
&rect,0,0,20,ClientHeight);
    
if(PtInRect(&rect,PT))
    
{
        Message.Result
=HTCAPTION;
    }

    
else
    
{
        DefaultHandler(
&Message);
    }

}

如果要处理其它消息,将KeyPreview属性设置True. 然后在OnKeyUp里面处理,或者重载消息处理过程!

总体来说BDS2007实现特殊窗口比原来简单了不少!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值