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 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);
}
}
...{
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实现特殊窗口比原来简单了不少!
- BSD2007 制作特殊窗口!
- 如何在PB中制作特殊形状数据窗口或按钮
- pb按钮:如何在PB中制作特殊形状数据窗口或按钮
- 如何在PB中制作特殊形状数据窗口或按钮
- 如何在PB中制作特殊形状数据窗口或按钮
- 如何在PB中制作特殊形状数据窗口或按钮介绍
- 制作窗口
- gkt特殊窗口
- 框架特殊窗口
- winform特殊气泡制作
- QQ特殊字符制作方式
- 制作特殊的底框
- html页面制作特殊技巧
- 制作VB属性窗口
- 制作透明窗口
- [JavaScript]制作弹出式窗口
- 磁性窗口制作
- 如何制作半透明窗口
- [转载]LCC编译器的源程序分析(44)函数名称的代码生成
- [转载]LCC编译器的源程序分析(45)函数代码入口和出口的代码生成
- [转载]LCC编译器的源程序分析(46)计算需要使用栈大小
- C++字符串完全指引之三 —— 字符串封装类续
- 文档的作用和分类
- BSD2007 制作特殊窗口!
- [转载]LCC编译器的源程序分析(47)计算需要使用栈大小
- Vi的替换命令
- [转载]LCC编译器的源程序分析(48) 寄存器分配
- 于软件工具之我见
- BCB 编写 DLL 终极手册
- 让我感动的一篇文章 一个台湾学生眼中的大陆
- Struts秘籍之第2段:第3.7式: 动态产生JavaScript
- 揭开正则表达式的神秘面纱