C2664无法将参数1从'int'转换为'hwnd'

时间:2013-08-14 14:14:46

标签: winapi pocketpc

我试图为旧的pocketpc应用程序制作一个简单的程序。

希望它能够得到时间并在我使用按钮时显示它。

使用下面的代码,我得到两个编译器错误:

error C2664: 'SetWindowTextW' : cannot convert parameter 1 from 'int' to 'HWND' Line: 201
error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR'  Line: 233
我试图搜索,似乎是一个常见的误解,但我无法看到适合的解释..

_strdate( dateStr);
SetWindowText(1003, dateStr);

还有:

hwndLabel = CreateWindow("STATIC","Time",
        WS_VISIBLE | WS_CHILD | SS_RIGHT,
        10,200,75,35,hWnd,NULL,1003,NULL);

编辑:

在Xearinox的建议之后,我得到了三个新的错误。

这些:

error C2664: '_wstrdate' : cannot convert parameter 1 from 'char [9]' to 'wchar_t *'    199
error C2664: 'SetDlgItemTextW' : cannot convert parameter 3 from 'char [9]' to 'LPCWSTR'    201
error C2440: '=' : cannot convert from 'HWND' to 'int'  233

如果我从静态中删除(HMENU),我得到另一个错误:

error C2664: 'CreateWindowExW' : cannot convert parameter 10 from 'int' to 'HMENU'  233

1 个答案:

答案 0 :(得分:1)

SetWindowText 的第一个参数是hwnd,而不是控件标识符。 试试这个:

SetDlgItemTextW(hWnd, 1003, dateStr);

将此用于检索日期:

WCHAR dateStr[256] = {0};
_wstrdate(dateStr);

还为CreateWindow使用宽字符串参数:

hwndLabel = CreateWindowW(L"STATIC",L"Time",
        WS_VISIBLE | WS_CHILD | SS_RIGHT,
        10,200,75,35,hWnd, (HMENU)1003, NULL, NULL);