Функция CreateWindowEx
ожидает строку C-стиля, которая является указателем на последовательность символов с нулевым символом.
То, что вы прошли, на самом деле является недействительным, и я довольно удивлен тем, что вы получили «A» вместо «A $^a! Bunch? * Of - @ (nasty^& + мусор {%". Вам повезло, что 0 было помещено после постоянной points
, вероятно, из-за прокладки вставленных ассемблера.
Если вы хотите отобразить номер как заголовок вашего окна, то вам сначала нужно преобразовать, что номер в строку.Есть несколько способов сделать это.Простейший просто вызвать функцию, которая сделает это за вас.Поскольку вы уже связаны с Win32 API, вы можете уйти с вызовом wsprintf
.Конечно, ссылка на библиотеку времени выполнения C ary и звоните snprintf
. Кроме того, вы можете написать свой собственный код, который преобразует число в строку.
Предполагая, что ваша строка является статическим, еще лучше было бы просто использовать строку в первую очередь:
points db "65",0
(могли бы хотеть, чтобы выбрать лучшее название, чем points
).
Также отметим, что для Windows является Unicode, на основе операционной системы, и она реализует Unicode с помощью 2-х байт UTF-16 типа. Следовательно, вы всегда должны явно ссылаться на W
-используемые версии функций Windows API (или определять символы UNICODE
и _UNICODE
), а ваши строковые символы должны быть размером WORD. Таким образом, код будет:
strCaption dw '6','5',0
invoke CreateWindowExW,0,ADDR classStatic,ADDR strCaption, WS_CHILD or WS_VISIBLE,100,100,50,50,hWnd,0,hInstance,0
Вы должны преобразовать его в текст. См. Например, 'snprintf' – Jester
65 - это два символа:« 6 »и« 5 ». Вы можете создать свою собственную процедуру для преобразования из двоичного кода (65) в строку ('65'). –