注册 登录
编程论坛 VFP论坛

typedef struct 来对译一下C的结构,VFP如何表达,高手请进

iswith 发布于 2022-12-17 18:51, 1677 次点击
typedef struct { mbProxy proxy; unsigned int mask; } mbSettings; mask可以取:
WKE_SETTING_PROXY:效果和mbSetProxy一样,通过proxy设置
WKE_SETTING_PAINTCALLBACK_IN_OTHER_THREAD:这是个高级用法,开启时,on paint回调会在另外个线程(其实就是渲染线程)。
这个是用来实现多线程上屏功能,性能更快。
15 回复
#2
iswith2022-12-17 19:01
知道歪果仁十年前就会了!
#3
吹水佬2022-12-17 20:22
只是定义结构类型 mbSettings
要译什么
#4
iswith2022-12-17 21:05
VFP如何表达这个结构可用任何想到的办法,只要这个结构合法能被VFP引用传递就行
#5
吹水佬2022-12-17 23:10
typedef struct { mbProxy proxy; unsigned int mask; } mbSettings;
先说说这个:mbProxy 是什么?
#6
cssnet2022-12-17 23:25
以下是引用吹水佬在2022-12-17 23:10:16的发言:
typedef struct { mbProxy proxy; unsigned int mask; } mbSettings;
先说说这个:mbProxy 是什么?


某天生物考试,题目是看鸟的腿回答出鸟的栖息地和名字。
一个考生实在不懂,卷子一撕,大步离开考场。
监考老师拉住他“这个同学?你哪班的?叫什么名字?”
考生一急,把裤腿往上一拉“你猜呀,你猜呀!!”

#7
iswith2022-12-18 10:47
只是说实现原理,没必要深研结构要不要我贴不完了。。。。
void mbInit(const mbSettings* settings)
typedef struct { mbProxy proxy; unsigned int mask; } mbSettings; mask可以取:
WKE_SETTING_PROXY:效果和mbSetProxy一样,通过proxy设置
WKE_SETTING_PAINTCALLBACK_IN_OTHER_THREAD:这是个高级用法,开启时,on paint回调会在另外个线程(其实就是渲染线程)。
这个是用来实现多线程上屏功能,性能更快。

//结构    public struct mbSettings
    {
        public mbProxy proxy;
        public mbSettingMask mask;
        [MarshalAs(UnmanagedType.FunctionPtr)]
        internal mbOnBlinkThreadInitCallback blinkThreadInitCallback;
        public IntPtr blinkThreadInitparam;
    }

public struct mbProxy
    {
        public mbProxyType type;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
        public string hostname;
        public ushort port;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
        public string username;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
        public string password;
    }

[此贴子已经被作者于2022-12-18 11:43编辑过]

#8
cssnet2022-12-18 11:10
楼主可能不太懂c语言,你提供的这些东东,缺少字节细节,真的也就相当于:你拉起裤腿,让别人猜你是谁啊。
#9
iswith2022-12-18 11:52
比如说我首先要到从自定义库堆中分配指定数量的字节(16),然后如何如何。。。。。。这样的实现逻辑!你就盯着这个结构细节有毛线用!他就是一个结构,就是一个结构,细节描述你不是可以自我理解?说A cursor是什么什么作用大致意思,难道硬是要我把A cursor字段细节描述一下?

[此贴子已经被作者于2022-12-18 11:53编辑过]

#10
cssnet2022-12-19 18:31
以下是引用iswith在2022-12-18 11:52:02的发言:
比如说我首先要到从自定义库堆中分配指定数量的字节(16),然后如何如何。。。。。。这样的实现逻辑!你就盯着这个结构细节有毛线用!他就是一个结构,就是一个结构,细节描述你不是可以自我理解?说A cursor是什么什么作用大致意思,难道硬是要我把A cursor字段细节描述一下?


九唔搭八,都混吉嘅。
结构缺少字节宽度的细节,来求对译——这就相当于前天张大少发的帖子:

说,冰天雪地裸体跪求大哥大嫂大爷大奶们帮助:帮忙将"人事表.db"转成"人事表.csv"吧!

热心的牛大爷提示:
大兄弟,"人事表.db"具体表的格式与表字段结构你发一下。

张大春牛B哄哄地回道:
挑!"人事表.db"无非就是些“姓名、性别、部门、职务、电话、住址、工龄、年假、公积金、职位津贴……”之类啦,当中涉及一些计算公式,挺繁琐,你不必理解也不必关注,总之,少罗里罗嗦,你管我什么“具体表的格式与表字段结构”?你闭上眼睛撸就是啦,咪搞搞阵冇帮衬,不懂你就揽一边去!……


之所以采用楼主看不懂的方言来“讥讽”楼主,事关,楼主似乎也看不懂C的方言,却愣要摆弄C的事情;他人好心一再提醒了,偏还不听,死犟!
其实,对于VFP,就最通俗、最简单的意义而言——
C结构,大致上相当于“掰着手指头,一个一个数,数什么呢?数的是字节长度,构建字符串;细心数,千万莫数错!”
若是看不懂这句有些拗口的大白话,并出言不逊质疑“字节细节”,那么很抱歉,活该被“讥讽”了。
呵呵。


[此贴子已经被作者于2022-12-20 09:56编辑过]

#11
吹水佬2022-12-20 16:24
要解释结构,先要了解结构成员的属性:数据类型、大小。
有些特别另类的结构还要搞清楚“对齐”的问题,否则VFP读写此结构有可能会不正确。
#12
iswith2022-12-21 12:38
然后我需要怎么做才能把结构在VFP生成?
#13
吹水佬2022-12-21 12:44
回复 12楼 iswith
就是一块连续的内存空间依次存放着各成员数据
#14
iswith2022-12-21 16:31
以下是引用donotspam在2022-12-21 13:09:03的发言:



有没有V 表说明!我看着头晕
#15
pvm20002022-12-23 17:30
你可以将整个结构定义为一个字符串,自己知道哪些字节是为哪些成员分配的就可以操作了
#16
whinda2022-12-26 02:02
C的结构就是以0值结尾(chr(0))或者是.null.的字串,在VFP中也是可以表示的。某些Win32函数调用,需要传入结构类型的数据。如设置系统时间,需求传入日期时间类型的结构,结构体不一样在VFPP中的组装方式也会不一样的。在VFP中利用SetLocalTime函数调用设置系统日期或时间
  set date ansi
  set century on
  set hours to 24
  *假定设置系统日期、时间为:1999,9,1
  nDate=ctod('1999-09-01')
  oldtime=TIME()             &&取当前时间
  nHo=VAL(subs(oldtime,1,2))       &&取当前时间-时
  nSe=VAL(SUBSTR(oldtime, 4, 2))     &&取当前时间-分
  nMi=VAL(SUBSTR(oldtime, 7, 2))     &&取当前时间-秒
  nMM=VAL(RIGHT(oldtime, 2))       &&取当前时间-毫秒
  cBuf=h2str(YEAR(nDate))+h2str(MONTH(nDate))+h2str(DOW(nDate) - 1)+;
    h2str(DAY(nDate))+h2str(nHo)+h2str(nSe)+h2str(nMi)+h2str(nMm)
  *&&将转换后的二进制字符连接
  DECLARE SHORT SetLocalTime IN win32api STRING SystemTime
    =SetLocalTime(cBuf)       &&设置系统日期
  Retu
1