2013-08-14 4 views
-1

Im пытается создать простую программу для старого приложения pocketpc.C2664 Невозможно преобразовать параметр 1 из 'int' в 'hwnd'

Хотите, чтобы получить время и показать его, когда я использую кнопку.

С ниже код, я получаю две ошибки компилятора:

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 

Ive пытался искать, кажется, распространенное заблуждение, но я не могу видеть объяснение, которое соответствует ..

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

Кроме этого:

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

Edit:

После предложений 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 
+0

Теперь отредактированный ответ. – Xearinox

+0

Отредактировано снова! Вы используете CreateWindow или CreateWindowEx? – Xearinox

ответ

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); 
+2

Не используйте строковые литералы, если только не нужно. '' уже имеет предопределенные имена классов общих окон управления; используйте 'WC_STATICW' вместо' L "STATIC" '. – IInspectable

Смежные вопросы