当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C++Builder中调集的处理</b>[VC/C++编程]

赞助商链接



  本文“<b>C++Builder中调集的处理</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

首先看一看窗口的MouseDown事件的声明

  void __fastcall TForm1::FormMouseDown(TObject *Sender,TMouseButton Button,TShiftState Shift,int X,int Y)

此中的Shift参数被阐明为TShiftState范例:

  enum Classes_1{ssShift,ssAlt,ssCtrl,ssRight,ssMiddle,ssDouble};
  typedef SetTShiftSTate;

TShiftSTate是一个调集(Set),也就是说,TShiftState是Sysdefs.h中Set模板类的一个实例.假如想要知道某个元素是不是调集合的一个成员,可以利用Contains办法:

  ShiftKey->Checked=Shift.Contains(ssShift);
  ControlKey->Checked=Shift.Contains(ssCtrl);
  LeftButton->Checked=Shift.Contains(ssLeft);
  RightButton->Checked=Shift.Contains(ssRight);

这段代码询问元素ssRight是不是属于Shift调集.假如是的话,那么代码就设置为TCheckBox组件的状况.

下面是在运行状况下阐明一个调集的办法:

  TShiftState LeftShift;
  LeftShift<

关于上面这个调集,假如询问调集合能否包含ssLeft或ssShift, 那么Contains运算符将返回True值.

除了Contains办法外,还可以在Set类中利用下面三个运算符:

+ 并集

- 差集

* 交集

上面这三个运算符都返回一个调集,而Contains返回一个布尔值.

SETEXP程序

以下面程序清单所示,SETEXP程序阐明了若何利用Set模板类中的关键元素.

  ///////////////////////////////////////
  // File: Main.cpp
  // Project: SetExp
  // Creator: Copyright 1998 by Charlie Calvert
  //
  #include
  #pragma hdrstop
  #include "Main.h"
  #pragma resource "*.dfm"
  TForm1 *Form1;
  __fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
  {
  }
  void TForm1::CheckState(TShiftState Shift)
  {
  ShiftKey->Checked = Shift.Contains(ssShift);
  ControlKey->Checked = Shift.Contains(ssCtrl);
  LeftButton->Checked = Shift.Contains(ssLeft);
  RightButton->Checked = Shift.Contains(ssRight);
  }
  void __fastcall TForm1::UnionClick(TObject *Sender)
  {
  AnsiString Operators[3] = {"+", "*", "-"};
  TShiftState FinalSet;
  TShiftState LeftShift;
  TShiftState LeftCtrl;
  LeftShift << ssLeft << ssShift;
  LeftCtrl << ssLeft << ssCtrl;
  switch (TOptType(dynamic_cast (Sender)->Tag))
  {
  case otUnion:
  FinalSet = LeftShift + LeftCtrl;
  break;
  case otIntersection:
  FinalSet = LeftShift * LeftCtrl;
  break;
  case otDifference:
  FinalSet = LeftShift - LeftCtrl;
  break;
  }
  CheckState(FinalSet);
  Label2->Caption = Operators[dynamic_cast(Sender)->Tag];
  }
  void __fastcall TForm1::Label4MouseDown(TObject *Sender, TMouseButton Button,
  TShiftState Shift, int X, int Y)
  {
  CheckState(Shift);
  }

SetExp程序阐明了若何对调集举行拜候和操作.特别是程序中利用了TShiftState范例的调集.通过这个示例程序可以学习利用C++Builder调集所需的内容.

SETEXP程序的主窗口包含了4个TCheckBox、2个TPanel、4个TLabel和3个TBitBtn对象.4个TCheckBox对象安排在第一个TPanel对象的上面,第4个TLabel对象安排在第二个TPanel对象的上面.

SETEXP程序可以显示在单击鼠标时,能否按下了Shift键或Ctrl键,还可以显示用户按下 的是鼠标左键还是右键.代码中阐明了若何利用交集、并集和差集运算符.


  以上是“<b>C++Builder中调集的处理</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .