BCG使用介绍 下载本文

}

//------------------------ static int daysMarked [] = {

1, 8, 10, 15, 25, 28

};

CArray arMarkedDates;

for (int i = 0; i < sizeof (daysMarked) / sizeof (int); i++) { }

m_calendar.MarkDates (arMarkedDates); //------------------ // Set colored days: //------------------

static int daysColor1 [] = { { }

static int daysColor2 [] = { { }

m_calendar.EnableMutipleSelection (TRUE); m_calendar.EnableTodayButton (TRUE); m_calendar.EnableWeekNumbers (FALSE);

COleDateTime dayColor (today.GetYear (), today.GetMonth (), daysColor2 [i], 0, 0, 0); m_calendar.SetDateColor (dayColor, RGB (0, 0, 255));

19, 20, 23

};

for (int i = 0; i < sizeof (daysColor2) / sizeof (int); i++)

COleDateTime dayColor (today.GetYear (), today.GetMonth (), daysColor1 [i], 0, 0, 0); m_calendar.SetDateColor (dayColor, RGB (255, 0, 0));

4, 5, 6 };

for (int i = 0; i < sizeof (daysColor1) / sizeof (int); i++)

COleDateTime dayBold (today.GetYear (), today.GetMonth (), daysMarked [i], 0, 0, 0); arMarkedDates.Add (dayBold.m_dt);

CBCGPCalendar::SetSingleMonthMode用于设置日历是否只显示一个月。如果其参数bSingleMonth=TRUE,则无论控件多大,都只会显示一个月;如果bSingleMonth=FALSE,

那么会根据控件的客户区大小来决定显示几个月。

CBCGPCalendar::MarkDates用于对日历控件中的某些日期做标记,被标记的日期会用粗体显示。函数原型: void MarkDates(const bRedraw=TRUE);

CArray&arDates,BOOL

注意第一个参数是一个DATE数组的引用。 模板:

COleDateTime today = COleDateTime::GetCurrentTime (); static int daysMarked [] = {

1, 8, 10, 15, 25, 28

};

CArray arMarkedDates;

for (i = 0; i < sizeof (daysMarked) / sizeof (int); i++)

{ }

m_wndCalendarCtrl.MarkDates (arMarkedDates);

COleDateTime dayBold (today.GetYear (), today.GetMonth (), daysMarked [i], 0, 0, 0); arMarkedDates.Add (dayBold.m_dt);

CBCGPCalendar::SetDateColor用于将指定的日期以特殊颜色显示。 CBCGPCalendar::EnableMutipleSelection是否开启多选模式。若其参数bEnable=FALSE,则不开启多选模式,一次只能选择一个日期;若其参数bEnable=TRUE,则开启多选模式,在多选模式下可以同时选择多个日期。选择方式有:①鼠标单击并拖动;②按住Ctrl后多次点击鼠标;③点击每周前面的周数(周数是指这一周是今年的第几周),可以选择一整周。 CBCGPCalendar::EnableTodayButton是否启用“Today”按钮。若其参数bEnable=TRUE,则启用,控件运行时会额外显示一个“Today”按钮。如果此时正在浏览其他日期,点击该按钮就会直接回到今天的日期。

CBCGPCalendar::EnableWeekNumbers是否启用周数。周数也就是当前周是今年的第几周。若其参数bWeekNumbers=TRUE,则启用周数,在日历每个周的左侧会显示当前周的周数。若bWeekNumbers=FALSE,则不会显示周数。

CBCGPEdit

CBCGPEdit从CEdit派生,该类默认为文本输入框。除此之外,还可以实现:

浏览编辑框。该编辑框右侧有个浏览按钮,但其行为需要自定义。使用该类型编辑框需调用EnableBrowseButton(TRUE)函数。另外需重载CBCGPEdit类的virtual函数CBCGPEdit::OnBrowse 。

计算器编辑框。该编辑框右侧是个计算器按钮,点击后会弹出一个小计算器。调用该类型编辑框只需要:

m_edit.EnableBrowseButton(FALSE); m_edit.EnableCalculatorButton();

对于其具体行为需要重载类的OnCalculatorUserCommand。

浏览文件编辑框。该编辑框右侧是个浏览文件按钮,点击后会弹出一个浏览文件对话框。调用该类型编辑框只需要:

m_edit.EnableBrowseButton(FALSE); m_edit.EnableFileBrowseButton();

另外该类还提供了一个函数接口void SetBrowseButtonImage(UINT uiBmpResId);来支持自定义按钮图标。

CKeyAssign

键盘按钮获取。只需要将Edit的变量类型更改为CKeyAssign即可。 该类可以获取键盘按下的单个字母或者组合键,并显示在Edit中。同时提供了接口函数以获取按下的键。

CBCGPMaskEdit

限定格式内容Edit。该Edit会限定输入的格式与输入的具体内容。如:2013-12-20。这个字符串的格式就是XXXX-XX-XX,输入内容是数字0-9。

该控件会将输入内容自动提取并转换为对应的格式并显示。

如:输入20131220,就会自动显示为2013-12-20。而输入ABC31220,则是非法的,是无法输入的。

该类用法:

为一个Edit控件绑定一个CBCGPMaskEdit类变量m_edit。

在初始化函数中做以下设置: m_edit.EnableMask(

_T(\ ddd dd dd\// 输入的内容限制 _T(\// 输入的格式限制 _T(‘ ‘));

// 默认字符

m_edit.SetValidChars(_T(\m_edit.SetWindowText(_T(\注意事项:

①_T(\ ddd dd dd\该参数为输入的内容限制。这里使用的是d,也就是数字或空格。具体内容限制使用的字符见下表:

D d + C c 数字 数字或空格 +号、-号或空格 Alpha only Alpha or space

A a 字母 字母或空格 ②_T(\该参数为输入的格式限制。其中,每一个”_”表示一个输入字符。”()”以及”-“都是特殊字符,特殊字符会直接显示出来。如2013-12-20中的”-”即是特殊字符,输入20131220后,就会自动套用格式将特殊字符添加进去。只有”_”才表示输入字符,其他一切字母、数字、符号都可以作为特殊字符嵌套在这个参数里。

③_T(‘ ‘)该参数为默认字符。当输入时,比如要输入10个数字,但

只输入到第3个,还有7个数字没有输入,那么后7个数字的位置就会显示默认字符。一般来说默认字符设为空格。

④m_edit.SetValidChars(_T(\该函数用于设置具体的

输入内容。①中仅仅是规定了输入内容的类型,而SetValidChars()则规定输入内容具体允许有哪些。如要求只输入A~F与a~f的大小写字母,那么①仅仅规定了输入的是字母,但却无法规定A~F与a~f,从而F之后的字母也可以成功输入。但调用该函数就可以做相应的输入内容规定:m_edit.SetValidChars(_T(\其中里面字母的顺序是不重要的,可以乱序。

⑤m_edit.SetWindowText(_T(\为Edit设置初始化

显示。这个是非常重要的,必须要调用。如果Edit没有初始化显示,那么Edit就是空白的,无法输入。只有设置了初始化显示,Edit才能套用格式显示出来,从而可以按格式输入。

⑥特别要注意以下三行代码的格式:

_T(\ ddd dd dd\// 输入的内容限制 _T(\// 输入的格式限制 m_edit.SetWindowText(_T(\

这三行代码的格式一定要一致。

设空格用#号来表示,第二行代码中的’_’用*来表示。所谓一致是指: 第一行代码:#ddd##ddd#dd#dd 第二行代码:(***)*ddd*dd*dd 第三行代码:(123)#123-12-12

竖着看,三行代码都严格按照相同的格式来书写,输入内容与特殊字符的位置一定不能搞错,空格的个数一定不能多或少。否则可能编译出错或者无法显示。

CBCGPGridCtrl

该控件在BCG中全部由代码实现,不需要依赖控件。所以该控件需要调用Create()函数来创建一个属于自己的窗口区域。但一般该窗口区域是内嵌在对话框或者单文档显示区的。

以对话框为例,定义一个该类对象,直接将对话框的某个区域分配给它,即可