Операционная система Microsoft Windows 3.1 для программиста -том 1


Параметры клавиатурных сообщений - часть 6


// Подготавливаем буфер и выводим его size = wsprintf(szBuf, "Клавиатура %s,\nподтип %d,\n", (LPSTR)apszKbTypes[type-1], subtype);

wsprintf(szBuf + size, " %d функциональных клавиш", nfkeys);

MessageBox(NULL, szBuf, "KBTYPE Application", MB_OK | MB_ICONINFORMATION); return 0; }

Приложение использует файл определения модуля, приведенный в листинге 5.2.

Листинг 5.2. Файл kbtype\kbtype.def

; ============================= ; Файл определения модуля ; ============================= NAME KBTYPE DESCRIPTION 'Приложение KBTYPE, (C) 1994, Frolov A.V.' EXETYPE windows STUB 'winstub.exe' STACKSIZE 5120 HEAPSIZE 1024 CODE preload moveable discardable DATA preload moveable multiple

Работа приложения KBTYPE понятна без дополнительных комментариев. Единственное, на чем нам хотелось бы остановиться, так это на использовании для подготовки текстового буфера функции wsprintf.

Функция wsprintf входит в ядро Windows и используется аналогично функции sprintf. Эта функция определена в файле windows.h следующим образом:

int FAR CDECL wsprintf(LPSTR lpszOut, LPCSTR lpszFmt, ...);

Первый параметр функции является дальним указателем на буфер, в который будет записана сформированная текстовая строка, закрытая двоичным нулем.

Второй параметр - указатель на строку формата, определяющую формат строки, которая будет записана в буфер. Допустимо использовать следующие спецификаторы форматов вывода:

Спецификатор Формат
c Один символ
d, i Целое число со знаком
ld, li Двойное целое число со знаком
u Целое число без знака
lu Двойное целое число без знака
lx, lX Двойное целое число без знака в шестнадцатеричном формате строчными или прописными буквами
s Текстовая строка

Далее следует произвольное число переменных, описанных в строке формата. Так как функции передается переменное число параметров, она (в отличие от подавляющего большинства функций программного интерфейса Windows) использует для передачи параметров соглашение языка Си, а не Паскаль.




Начало  Назад  Вперед



Книжный магазин