繁体   English   中英

win32 WM_SETTEXT无法正常工作

[英]win32 WM_SETTEXT not working

我做了一个像这样的小文本框

EBX =   CreateWindow(TEXT("EDIT"),  TEXT(""),  WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER | WS_BORDER, 
            client.right - offset[1] - 200, client.top + offset[2] - 27, 
            45, 25, hwnd, (HMENU)ID_EDIT_SPEED, NULL, NULL);

一切都很好,但当我试图改变这里面的文字时,我遇到了一些问题

SendMessage(EBX, WM_SETTEXT, 0, (LPARAM)"12"); // working
int a = 40;
SendMessage(EBX, WM_SETTEXT, 0, (LPARAM)a); // not working

知道什么是错的吗?

你不能盲目地将int转换为char *,使用sprintf,stringstream或std :: to_string来创建保存int值的文字表示的字符串。
或者,如果要使用值40输出char,则需要将指针传递给null终止字符数组。 喜欢

char str[2];
str[0]=40;
str[1]=0;

40不是字符串,“40”是。 如果要将数字转换为字符串,则必须使用sprintf等函数。

例如

int a = 40;
char str[20];
StringCchPrintf(str, _countof(str), "%ld", a);
SendMessage(EBX, WM_SETTEXT, 0, (LPARAM)str);

将40转换为c-string并在sendmessage函数中使用它

char buffer [33];
int i =40;
itoa (i,buffer,10);
SendMessage(EBX, WM_SETTEXT, 0, (LPARAM)buffer);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM