【C++Builder学习大全中文版(窗体部分)】
C++Builder是一款强大的集成开发环境,专为使用C++语言开发Windows应用程序提供支持。在窗体部分的学习中,我们主要涉及了两个关键知识点:如何制作主窗口显示前的版权窗口以及如何在C++ Builder中实现非矩形形状的按钮。
1. 制作主窗口显示前的版权窗口:
这个过程涉及到对工程文件的操作。通过File->New Form新建一个窗口,并设计好它的外观。然后,给窗口命名(如AboutBox),并为源文件指定名字(如AboutBox.cpp)。接着,通过Project->Options将新建的窗口从自动建立中移除,确保它在程序启动时不自动显示。在View->Project Source中打开工程源文件,并在适当位置添加#include "AboutBox.h"来包含关于窗口的头文件。修改WinMain函数,使其在应用程序初始化后显示版权窗口,等待一段时间后再隐藏它,以达到显示版权信息的效果。
示例代码:
```cpp
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
DWORD lTime;
try{
Application->Initialize();
AboutBox=new TAboutBox(AboutBox);
AboutBox->Show();
AboutBox->Update();
lTime=GetTickCount();
Application->CreateForm(__classid(TMainForm), &MainForm);
while((GetTickCount()-lTime) / 1000 <3);
AboutBox->Hide();
AboutBox->Free();
Application->Run();
} catch (Exception &exception) {
Application->ShowException(&exception);
}
return 0;
}
```
2. C++ Builder 中圆形、三角形按钮的实现:
C++ Builder 提供了创建非矩形形状按钮的功能,这得益于Windows 95对窗口区域的支持。窗口区域定义了窗口的可视和交互区域。实现非矩形按钮分为两步:
- **步骤1:创建按钮外形**,这通过使用API的区域创建函数实现,例如CreateEllipticRgn(创建椭圆区域)、CreatePolygonRgn(创建多边形区域)等。如果需要更复杂的形状,可以结合多个区域函数并使用CombineRgn函数组合它们。
- **步骤2:将区域应用到窗口上**,使用SetWindowRgn函数将创建的区域与窗口关联,从而改变窗口的形状。
下面是一个实现圆形和三角形按钮的例子:
```cpp
void __fastcall TForm1::FormCreate(TObject *Sender){
HRGN hRgnR = CreateEllipticRgn(0,0,RButton->Width,RButton->Height); // 圆形按钮
SetWindowRgn(RButton->Handle,hRgnR,TRUE);
HRGN hRgnT = CreatePolygonRgn(TrPoint,3,ALTERNATE); // 三角形按钮
SetWindowRgn(TButton->Handle,hRgnT,TRUE);
}
```
在这段代码中,TrPoint是一个自定义的POINT数组,用于定义三角形的顶点。注意,创建非矩形按钮时,区域的坐标是基于按钮自身的,而不是屏幕坐标。
通过这些技术,开发者可以在C++Builder中创造出更加个性化的用户界面,提高应用程序的用户体验。理解并熟练运用这些技巧对于深入学习C++Builder的窗体设计至关重要。