关于自己封装sdk的窗口类的问题

APIer 2001-03-10 11:58:00
最近在家里休息,没事自己写了一个对API的封装,主要的类有2个,一个是应用程序类JApplication,一个是窗口类,JWindow,还有消息映射等。但是我发现在bcb中,TForm有一个Width等的属性,修改后可以直接让窗口大小改变,请问他们是怎么做的?我心在采用了一种很愚蠢的办法,就是重载了一个JINT结构,重载他的=操作符,int的强制类型转换等,我想应该有更好的解决方案吧?
还有sdk中有什么函数直接修改窗体的大小位置么?
谢谢了:)
...全文
190 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
APIer 2001-03-16
  • 打赏
  • 举报
回复
这个问题我先给分了,我在VC论坛问了一下,也有了一些方案,但是都不太合理:)
hhmmdd 2001-03-11
  • 打赏
  • 举报
回复
我理解__property就是编译器负责把赋值转化为函数调用
vc是没有这个功能了
APIer 2001-03-11
  • 打赏
  • 举报
回复
还由,根据我的理解,BCB中__property是有Read,Write的关键字,来通知调用函数的:)
APIer 2001-03-11
  • 打赏
  • 举报
回复
我现在还是通过重载了JINT的=等操作符,然后将所有的width等属性申明成了JINT类的,这样修改他们就将重新画窗口了,我这样不过是研究一下了。
对了  我的竹叶 http://calfsoft.51.net,很久没有更新了,今天晚上我把我的封装传上去,请大家多多指点,不过最好不要骂我:)
rh 2001-03-10
  • 打赏
  • 举报
回复
其实属性只是私有成员的别名(可以这样说?),不占内存空间的。
比如:__property int Width = {read=FWidth, write=SetWidth, nodefault};里
其实,width只是fwidth的别名,而fwidth是私有成员。

kingofwang 2001-03-10
  • 打赏
  • 举报
回复
TForm的Width是属性,对属性的操作一般由函数来完成。
__property int Width = {read=FWidth, write=SetWidth, nodefault};
这是该属性的声明,意思是说,读这个属性时,直接访问这个变量(read=FWidth,FWidth是类的成员变量),写该属性时是调用SetWidth函数(write=SetWidth,SetWidth是类的成员函数)
__property是c++builder扩展的关键字,详细信息查看帮助文件吧。
APIer 2001-03-10
  • 打赏
  • 举报
回复
多谢kingofwang(王中王) ,但是我现在是在VC下面作VC没有__property关键字,连__closure都没有,那么看来我只有还是重载运算符了?
kingofwang 2001-03-10
  • 打赏
  • 举报
回复
定义成属性就行了,就象示例的那样,看一下关于__property帮助,应该说是编译器做的手脚,不过属性是标准C++应该支持的。
APIer 2001-03-10
  • 打赏
  • 举报
回复
高手们今天休息了?
APIer 2001-03-10
  • 打赏
  • 举报
回复
怎么没有人来看看阿,关注一下也好啊
APIer 2001-03-10
  • 打赏
  • 举报
回复
我就是问怎么让width等被写的时候去调用setwidth呢?borland不会在编译器中作了手脚吧:)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧