win32 WM_SETTEXT无法正常工作

时间:2013-04-14 12:19:03

标签: c++ visual-studio-2010 winapi

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

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

任何想法有什么问题?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

E.g。

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

答案 2 :(得分:0)

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

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