0,最重要的一条:中文都得在末尾加空格!!!
如下所示,整体模型后要加空格,如果你检查过所有代码都觉得没问题还是出现编译不过可能是这个问题。
'GDLG' 32503 Modal 40 0 300 300 "Domodal Dialog Test" {
/* [ 1] */ RadioButton 40 20 100 20 SmallPlain 1 "整体模型"
}
1,要看开发文档找到radiobutton的介绍页,grc控件的格式必须要根据文档提供的参数多少来填,否则会提示grc.gr2文件无法打开。
2,同一组radiobutton要写一样的groupID。
3,radiobutton设置一组中被选的按钮函数DGSelectRadio(NameModelMenuStringResourcedId, 1);
4,页面里面的控件坐标是根据页面来定的,页面的坐标还没查清楚。
5,文本控件如果不更改则不需要控件id。
6, 没有combo box,用PopupControl 替代,offset 代表的是文本显示的距离(如果没有icon就类似于icon的长度)。
如下:
/* [ 9] */ PopupControl 100 90 180 25 150 3
NoIcon "项目建议书准备阶段"
NoIcon "可行性研究阶段 "
NoIcon "设计阶段 "
NoIcon "建设准备阶段 "
}
7,CHSetDefaultCharCode(CC_SimpChinese)这个函数用来设置中文获取乱码的问题。
8,DGGetItemValLong(NameModelMenuStringResourcedId, dateControlId)用来获取日期控件的值。
其中:
NameModelMenuStringResourcedId是对话框的id
dateControlId是日期控件的ID
9,模态对话框中的窗口标题如果是中文需要在末尾空格。如'GDLG' 32502 Modal 40 0 300 260 "文件配置 " {
10,模态对话框没有最大化以及关闭图标。
11,如果用到grc写文本,确保末尾有两个空格,不然会报错。如:
/* [ 28] */ LeftText 50 290 80 20 SmallPlain vCenter Default "自审结论: "
是正确的
/* [ 28] */ LeftText 50 290 80 20 SmallPlain vCenter Default "自审结论:"
是错误的
12,listbox的用法。
customerListBox.SetHeaderSynchronState(false);
customerListBox.SetHeaderItemCount(2);
customerListBox.SetTabFieldCount(2);
const short listBoxTab1Width = 120;
const short listBoxTab2Width = 120;
short pos = 0;
customerListBox.SetTabFieldProperties(tabindex1Id, pos, pos + listBoxTab1Width, DG::ListBox::Center, DG::ListBox::NoTruncate, false);
pos += listBoxTab1Width;
customerListBox.SetTabFieldProperties(tabindex2Id, pos, pos + listBoxTab2Width, DG::ListBox::Left, DG::ListBox::NoTruncate, false);
pos += listBoxTab2Width;
customerListBox.SetTabFieldProperties(tabindex3Id, pos, pos + listBoxTab3Width,
customerListBox.SetHeaderItemSize(1, listBoxTab1Width);
customerListBox.SetHeaderItemSize(2, listBoxTab2Width);
customerListBox.SetHeaderItemText(1, "单体建筑名");
customerListBox.SetHeaderItemText(2, "建筑编号");
customerListBox.SetTabFieldSeparator(tabindex1Id, true);
customerListBox.SetTabFieldSeparator(tabindex2Id, true);
customerListBox.InsertItem(1);
customerListBox.SetTabItemText(1, 1, "modal 1");
customerListBox.SetTabItemText(1, 2, "modal 2");
结合SetHeaderItemSize所在头文件以及文档看一下相关内容。
13: 使用tabcontrol时注意的点,创建一个对话框,在GRC放一个tabcontrol,然后再定义两个tabpage页,加入到对话框的GRC中。如:
'GDLG' 32506 Modal|grow 40 0 900 450 "整体信息 " {
/* [ 1] */ NormalTab 10 10 900 500
32507 130 "项目基础信息"
32525 131 "建设用地信息"
}
tabpage需要绑定到tabcontrol,如:
ConstructionFieldTab::ConstructionFieldTab(const DG::TabControl& tabControl) :
DG::TabPage(tabControl, 2, ACAPI_GetOwnResModule(), CONSTRUCTION_FIELD_INFO_TAB, ACAPI_GetOwnResModule()),
其中:tabControl是对话框中的tabControl变量,2是第二页即32525的资源id的页。CONSTRUCTION_FIELD_INFO_TAB,是资源id32525
14:listbox的大坑!!!
如果要用listbox的SetOnTabItem功能,在GRC文件中一定就要先把你要添加的控件先定义了!!(记住,很重要!!!!),不然,怎么都添加不上,怀疑人生。
'GDLG' 32525 TabPage 0 0 900 400 "" {
/* [ 1] */ LeftText 12 10 60 20 SmallPlain vCenter Default "用地信息: "
/* [ 2] */ PopupControl 70 10 200 25 150 3
NoIcon "包含分区用地 "
NoIcon "不包含分区用地 "
/* [ 3] */ Button 714 35 80 35 LargePlain "保存"
/* [ 4] */ Button 800 35 80 35 LargePlain "取消"
/* [ 5] */ Button 680 35 80 35 LargePlain "..."
/* [ 6] */ UserControl 0 0 18 18 257 0x0005 0x1600 0
/* [ 7] */ MultiSelList 10 75 800 250 LargePlain PartialItems 21 HasHeader 21
15:#include "APIEnvir.h"
#include "ACAPinc.h"
包含API的头文件一定要包含这两个一起,而且顺序不能错,不然api会显示没定义。
#include“ FileSystem.hpp” //带来使用FileSystem类所需的一切(例如Location)
IO :: Location appFolderLoc; //它将保存正在运行的应用程序文件夹的位置
GSErrCode errorCode = IO :: fileSystem.GetSpecialLocation(IO :: FileSystem :: ApplicationFolder,&appFolderLoc);
16,ACAPI_Favorite_Get 应该是用于获取导入的文件的所有信息,其中获取到的结构体 API_Favorite有个唯一的name应该可以用于获取唯一标识一个文件的值。