递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2002|回复: 16
打印 上一主题 下一主题

[其它] 这种wchar_t如何封装

[复制链接]

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
跳转到指定楼层
楼主
发表于 2025-3-13 17:02:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这个wchar_t 类型应该如何封装

这是原生声明

火山视窗封装视频教程
回复

使用道具 举报

28

主题

2140

帖子

7774

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7774
来自 2#
发表于 2025-3-14 14:48:09 | 只看该作者

我又没打错,你这还能复制错?
看了一下,你这个 acedGetString 函数有好几个重载,下面几个你可以都试一下(推荐第一个,不用提供字符长度)。


  1. @ AcString buf;
  2. @ int ret = acedGetString(@<仅命令模式>), @<输入提示>.GetText(), buf);
  3. @ @<字符缓冲区>.SetText(buf.kwszPtr());
  4. @ return ret;
复制代码


  1. @ @<字符缓冲区>.SetLength(40);
  2. @ return acedGetString(@<仅命令模式>), @<输入提示>.GetText(), (wchar_t*)@<字符缓冲区>.GetText(), 40);
复制代码


  1. @ @<字符缓冲区>.SetLength(40);
  2. @ return acedGetString<40>(@<仅命令模式>), @<输入提示>.GetText(), (wchar_t*)@<字符缓冲区>.GetText());
复制代码
回复

使用道具 举报

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
板凳
 楼主| 发表于 2025-3-13 17:05:28 | 只看该作者
这种两种都试了搞不了



火山视窗封装视频教程
回复

使用道具 举报

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
地板
 楼主| 发表于 2025-3-13 17:30:37 | 只看该作者
urenai 发表于 2025-3-13 17:29
@ 添加  .GetText()

在2楼截图,说的这种我试过不行
火山视窗封装视频教程
回复

使用道具 举报

452

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
42658
5#
发表于 2025-3-13 18:39:53 | 只看该作者

去搜一下。看看类库里面有没有类似的。


安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

28

主题

2140

帖子

7774

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7774
6#
发表于 2025-3-13 20:01:34 | 只看该作者
本帖最后由 Xelloss0618 于 2025-3-13 20:08 编辑

有没学过C的基础语法啊……
这是C的数组,C的数组是指针,怎么可能是强转到 wchar_t 呢,应该是 wchar_t*另外你用文本型接收返回,也应该先分配好内存,用 置文本长度 之类的
回复

使用道具 举报

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
7#
 楼主| 发表于 2025-3-13 20:10:50 | 只看该作者
Xelloss0618 发表于 2025-3-13 20:01
有没学过C的基础语法啊……
这是C的数组,C的数组是指针,怎么可能是强转到 wchar_t 呢,应该是 wchar_t*另 ...

那应该怎么做
火山视窗封装视频教程
回复

使用道具 举报

413

主题

1897

帖子

7612

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7612
QQ
8#
发表于 2025-3-13 21:12:12 | 只看该作者
X总已经讲的很清楚了,还有他说的非常正确,你应该先申请一段缓冲区,再传如len

这是常识性知识,因为基本上你能用得到的winAPI,大多数在获取数据前,你都必须先申请一段内存,将指针传进去,一般还会有一个参数让你传len值,这个参数也可能是要求传入plen。
给你举个例子: recv(s,buf,len,f)
例如这个函数是获取socket中已接收的数据。
正常情况下必须在调用recv前执行:
len =4096
buf=分配内存(len)
ret=recv(s,buf,len,0)
ret >0 =实际从系统重复制 出 数据的 长度
例如调用:  指针到字节集(buf,ret)  = 实际接收到的数据。
就拿这个函数讲,如果数据大于 len 长度(他会堆叠数据,不把数据拷贝出来就一直堆在里面)

  
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
9#
 楼主| 发表于 2025-3-13 21:34:19 | 只看该作者
urenai 发表于 2025-3-13 21:12
X总已经讲的很清楚了,还有他说的非常正确,你应该先申请一段缓冲区,再传如len

这是常识性知识,因为基本 ...

不是很懂,可有例子
火山视窗封装视频教程
回复

使用道具 举报

413

主题

1897

帖子

7612

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7612
QQ
10#
发表于 2025-3-13 21:37:59 | 只看该作者
参考  取窗口标题
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

219

主题

1663

帖子

6939

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
6939
QQ
11#
 楼主| 发表于 2025-3-13 21:59:55 | 只看该作者
urenai 发表于 2025-3-13 21:37
参考  取窗口标题

没搜到啊
火山视窗封装视频教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-3 11:45 , Processed in 0.106018 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表