WM_GETTEXT只获得第一个字符

时间:2013-06-16 23:08:52

标签: visual-c++ windows-xp wine

所以,大家好。

我在虚拟机上的win2k上安装了MSVC6,但可执行文件是在模拟winXP的葡萄酒下运行的(很奇怪嗯?)。

我有一些代码,它创建了一个EDIT字段数组:

        for (i=0; i<NDRIVES_MASK+1; i++) {
            hWndEdit_Nstep[i] = CreateWindowEx (NULL,
                "EDIT",
                "0",
                WS_CHILD|WS_VISIBLE|WS_BORDER,
                150, // x
                45+40*i,  // y
                75,  // w
                40,  // h
                hWnd,
                (HMENU)IDC_NSTEP_EDIT[i],
                GetModuleHandle(NULL),
                NULL);
            sprintf(str, "Число полушагов [%3d]", i);
        };

我还有一些其他代码部分,试图在那些编辑中读取数据:

            for (i=0; i<NDRIVES_MASK+1; i++) {
                DriveN = i;
                printf("--- [DEBUG] - DriveN - %#x\n", DriveN);
                SendMessage(hWndEdit_Nstep[DriveN],
                          WM_GETTEXT,
                          (WPARAM)256,
                          (LPARAM)buftext);
                Nsteps = _wtoi(buftext);
                printf("--- [DEBUG] - Nsteps - %#x\n", Nsteps);
                wprintf(L"--- [DEBUG] - Nsteps - %s\n", buftext);
            }   // for (i, ndrives)

更新:

buftext声明如下:

wchar_t buftext[256];

我的问题是 - 当我在任何一个或几个EDIT中只输入一位十进制数时,这些数字就是正确的读取和输出。但是当我输入多位小数时 - 它们被视为零。 这个问题是关于什么的?

提前致谢。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

您没有显示buftext的声明,但我怀疑您将其键入宽字符缓冲区并在您打算使用_wtoi时使用atoi