C++ Builder 界面开发

C++ Builder 6.0 界面实例开发
实例1 界面图案演示
实例2 创建标题栏在左边的窗口界面
实例3 创建超级连接界面
实例4 创建不规则窗口界面
实例5 创建可扩展对话框界面
实例6 创建NEO Skin 窗口界面
实例7 创建Windows2000 透明窗口界面
实例8 创建自画弹出式菜单界面
实例9 创建自画主菜单界面
实例10 创建自画窗口背景界面


实例1 界面图案演示


实例目标

本实例作来本书的第一个实例,主要让大家轻松地学习本书,让大家先有一个感觉,编
程其实是一个很美的事情。

实现技术

主要用两函数MoveTo 和LineTo 实现。设置窗口的颜色为clNone 。
代码如下:
void __fastcall TfrmMain::FormPaint(TObject *Sender)
{

double x1,y1,x2,y2;

const int nScale = 100;

Canvas->Pen->Color = clYellow;// 设置FORM 界面的画笔颜色。

for (int i=0; i<720; i++)

{

double dAngle = i*M_PI/360;//M_PI 在math.h 里。

double E = nScale*(1+sin(3*dAngle));

x1 = 320+E*cos(dAngle);

x2 = 320+E*cos(dAngle+M_PI/5);

y1 = 240+E*sin(dAngle);

y2 = 240+E*sin(dAngle+M_PI/5);


Canvas->MoveTo(x1,y1);// 移到x1,y1 位置。
Canvas->LineTo(x2,y2);// 从当前位置画直线到x2,y2.


}

}

实现步骤

实现步骤很简单,用CB6.0 创建一个应用程序,把它保存为exp1 。然后设置窗口的背
影颜色为clNone ,设置FormPaint 事件函数,并加入以上代码就行了。


实例2 创建标题栏在左边的窗口界面

实例目标

实现左边标题,能拖动的窗口。如下图所示:


实现技术

第一步先指明窗口BorderStyle 为bsNone,这样就不能拉伸窗,没有标题和边框。第二
步就是在FormPaint(TObject *Sender) 函数里面画上标题和边框。这个函数响应消息OnPaint,
当出现重画窗口时调用。第三步就是响应WM_NCHITTEST 消息,以便拖动窗口。当返回
这个消息的结果为HTCAPTION 时,WINDOWS 就认为鼠标在标题框内,所以能拖动窗口
移动。

实现步骤

第一步创建程序,在Object Inspector 中设置BorderStyle 为bsNone 。
第二步添加DrawTitle() ,代码如下:
void __fastcall TfrmTitle::DrawTitle(void)
{


RECT rc;
//左边标题栏。
::SetRect(&rc,0,0,nTitleWidth,ClientHeight);
Canvas->Brush->Color = clBlue;
Canvas->FillRect(rc);
//右边边界。
::SetRect(&rc,ClientWidth-2,0,ClientWidth,ClientHeight);
Canvas->Brush->Color = clBlue;
Canvas->FillRect(rc);
//上面边界。
::SetRect(&rc,0,0,ClientWidth,2);
Canvas->Brush->Color = clBlue;
Canvas->FillRect(rc);
//下面边界。
::SetRect(&rc,0,ClientHeight-2,ClientWidth,ClientHeight);
Canvas->Brush->Color = clBlue;



Canvas->FillRect(rc);
//设置ICON 位置。
ImageIcon->Left = 0;
ImageIcon->Top = ClientHeight - ImageIcon->Height;
//输出标题。
char* msg=Caption.c_str();


LOGFONT fontRec;
memset(&fontRec,0,sizeof(LOGFONT));
fontRec.lfHeight = -13;
fontRec.lfWeight = FW_NORMAL;
fontRec.lfEscapement = 900; // 字体旋转90 度。
lstrcpy(fontRec.lfFaceName," 宋体");


HFONT hFont=CreateFontIndirect(&fontRec);// 创建字体。
HFONT hOld=::SelectObject(Canvas->Handle,hFont);// 选中字体。


::SetRect(&rc,0,0,nTitleWidth,ClientHeight);
::SetTextColor(Canvas->Handle,RGB(255,255,255));// 设置字体的颜色。
//输出标题。
::TextOut(Canvas->Handle,3,ClientHeight - ImageIcon->Height,msg,lstrlen(msg));


::SelectObject(Canvas->Handle,hOld);// 恢复。
::DeleteObject(hFont);


}

第三步添加OnNcHitTest(TMessage& tMsg) 函数,处理WM_NCHITT

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值