BSD2007 制作特殊窗口!

来源:互联网 发布:linux rar安装 编辑:程序博客网 时间:2024/05/30 02:52

用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实现特殊窗口比原来简单了不少!

 

原创粉丝点击