沉默流星 发表于 2025-3-13 17:02:42

这种wchar_t如何封装

这个wchar_t 类型应该如何封装

这是原生声明

Xelloss0618 发表于 2025-3-14 14:48:09

沉默流星 发表于 2025-3-14 09:02
这是复制黏贴的

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


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



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



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

沉默流星 发表于 2025-3-13 17:05:28

这种两种都试了搞不了



沉默流星 发表于 2025-3-13 17:30:37

urenai 发表于 2025-3-13 17:29
@ 添加.GetText()

在2楼截图,说的这种我试过不行

创世魂 发表于 2025-3-13 18:39:53


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


Xelloss0618 发表于 2025-3-13 20:01:34

本帖最后由 Xelloss0618 于 2025-3-13 20:08 编辑

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

沉默流星 发表于 2025-3-13 20:10:50

Xelloss0618 发表于 2025-3-13 20:01
有没学过C的基础语法啊……
这是C的数组,C的数组是指针,怎么可能是强转到 wchar_t 呢,应该是 wchar_t*另 ...

那应该怎么做

沉默流星 发表于 2025-3-13 21:34:19

urenai 发表于 2025-3-13 21:12
X总已经讲的很清楚了,还有他说的非常正确,你应该先申请一段缓冲区,再传如len

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

不是很懂,可有例子

沉默流星 发表于 2025-3-13 21:59:55

urenai 发表于 2025-3-13 21:37
参考取窗口标题

没搜到啊

Xelloss0618 发表于 2025-3-13 22:06:25

@<字符缓冲区>.SetLength(40);
(wchar_t*)@<字符缓冲区>.GetText();

沉默流星 发表于 2025-3-14 08:46:55

本帖最后由 沉默流星 于 2025-3-14 08:51 编辑

Xelloss0618 发表于 2025-3-13 22:06
@.SetLength(40);
(wchar_t*)@.GetText();
测试之后报错


template<size_t nBufLen> inline int acedGetString(int cronly, const wchar_t *prompt,
                              wchar_t (& buf))
{
    return ::acedGetString(cronly, prompt, buf, nBufLen);
}参数2和参数3都是跳转的这个类型,如下#ifndef _WCHAR_T_DEFINED
    #define _WCHAR_T_DEFINED
    typedef unsigned short wchar_t;
#endif


页: [1] 2
查看完整版本: 这种wchar_t如何封装