- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《程序员》杂志2001年第8期文章
Q:如何使得我的程序可以脱离C++Builder各种DLL和BPL的支持而运行?
A:在你可以在工程的Options中去掉Packages页的Build with runtime packages选项和Linker
页的Use dynamic RTL选项,如果你启用了CodeGuard,你还需要去掉CodeGuard页的
CodeGuard Validation选项,然后重新编译你的程序就可以了。
Q:我有如下的几个枚举类型:
typedef enum {Monday=2, Tuesday, Wednesday, Thursday, Friday} workdays;
typedef enum{br2400=2400,br9600=9600,br14400=14400, br19200 =19200,br28800 =28800,br38400 =38400,br56000 =56000,br128000 =128000,br256000 =256000}ComBaudRate;
为何sizeof(workdays)=1而sizeof(ComBaudRate)=4?
A:我们都知道编译器在处理枚举类型是都是将其作为整型来处理,但是Borland的编译器对枚举类型做了优化处理。当枚举类型的数值小于256时Borland的编译器将枚举类型作为字节型(BYTE)数据来处理,此时枚举类型所占的存储空间为一个字节,对枚举类型求sizeof的结果为1;当数值在256和65535之间时编译器将枚举类型作为字类型(WORD)数据来处理,此时枚举类型所占的存储空间为两个字节,对枚举类型求sizeof的结果为2;当数值大于65535时编译器将枚举类型作为双字类型(DWORD)来处理,此时枚举类型所占的存储空间为四个字节,对枚举类型求sizeof的结果为4。我们可以在Options中Complier页选中Treatenumtypeasints来强制编译器将枚举类型作为整型数据(4个字节)来处理。正是由于这个原因,所以我们有很多的结构在C++Builder中计算其sizeof的大小和我们在Microsoft中计算的结果不一致。我们在编写同时提供给Borland的编译器使用和Microsoft的编译器使用的代码时尤其要注意到这两个编译器的这一点不同之处。
Q:如何窗体成为最底层,就像桌面一样,所有的窗体都在其上? (lbsxyk)A:Yeqiufeng(叶秋枫)
SetWindowPos(mainw-Handle, HWND_BOTTOM,0,0,Screen-Width,Screen-Height,SWP_NOACTIVATE);
::SetFocus(mainw-Handle);
//把窗口设置为最底层,但激活窗口
//SetWindowPos(mainw-Handle, HWND_NOTOPMOST,0,0,Screen-Width,Screen-Height,SWP_SHOWWINDOW);
//不激活窗口
Q:如何在TTreeView中知道一个TTreeNode如何取得它的根节点?(ahoy)A:Wingsun
TTreeNode中有一个属性叫Level表示了该节点位于第几层,这样你通过获得它的Parent,就可以获得它的root.
TTreeNode * pNode;pNode=TreeView1-Selected;while(pNode-Level0)
pNode=pNode-Parent;
这样你就可以获得TreeView1-Selected的根节点了.
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)你可以
按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery-FieldByName(Image);TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem-Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();pBitmap-LoadFromStream(pmem);
Image1-Picture-Assign(pBitmap);delete
文档评论(0)