Уроки Iczelion'а




Урок 5. Больше о тексте - часть 3


.ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd, ADDR ps mov hdc,eax invoke CreateFont,24,16,0,0,400,0,0,0,OEM_CHARSET,\ OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,\ DEFAULT_QUALITY,DEFAULT_PITCH or FF_SCRIPT,\ ADDR FontName

invoke SelectObject, hdc, eax mov hfont,eax RGB 200,200,50

invoke SetTextColor,hdc,eax RGB 0,0,255 invoke SetBkColor,hdc,eax invoke TextOut,hdc,0,0,ADDR TestString,SIZEOF TestString

invoke SelectObject,hdc, hfont invoke EndPaint,hWnd, ADDR ps .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam

ret .ENDIF xor eax,eax ret

WndProc endp

end start

Анализ:

invoke CreateFont,24,16,0,0,400,0,0,0,OEM_CHARSET,\ OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,\ DEFAULT_QUALITY,DEFAULT_PITCH or FF_SCRIPT,\ ADDR FontName

CreateFont создает логический фонт, который наиболее близок к данным параметрам и доступным данным фонта. Эта функция имеет больше параметров, чем любая другая в Windows. Она возвращает хэндл логического фонта, который можно выбрать функцией SelectObject. Мы в подробностях обсудим ее параметры.

CreateFont proto nHeight:DWORD,\ nWidth:DWORD,\ nEscapement:DWORD,\ nOrientation:DWORD,\ nWeight:DWORD,\ cItalic:DWORD,\ cUnderline:DWORD,\ cStrikeOut:DWORD,\ cCharSet:DWORD,\ cOutputPrecision:DWORD,\ cClipPrecision:DWORD,\ cQuality:DWORD,\ cPitchAndFamily:DWORD,\ lpFacename:DWORD

nHeight - желаемая высота символов. Hоль значит использовать pазмеp по умолчанию.

  • nWidth - желаемая ширина символов. Обычно этот параметр равен нулю, что позволяет Windows подобрать ширину соответственно высоте. Однако, в нашем примере, дефаултная ширина делает символы нечитабельными, поэтому я установил ширину равную 16.

  • nEscaрement - указывает ориентацию вывода следующего символа, относительно предыдущего в десятых градусов. Как правило его устанавливают в 0. Установка в 900 вынуждает идти все символы снизу вверх, 1800 - справа налево, 2700 - сверху вниз.

  • nOrientation - указывает насколько символ должен быть повернут в десятых градусов. 900 - все символы будут "лежать" на спине, и далее по аналогии с предыдущим параметром.




  • Содержание  Назад  Вперед