Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 221


Не напоминает ли это все нотификационные события при разработке оконных программ?

Демонстрационная программа

Думаю, что все дальнейшие объяснения излишни. Вспомним о прин­ципе «Seeing is believing». Давайте разберем небольшую демонстрацион­ную программу. При написании этой программы я, чтобы не утомлять читателя, сделал одно допущение: у мыши всего две кнопки. Надеюсь, это допущение не повлияет на восприятие программы читателем:

^include <windows,h>

265

mainQ

HANDLE hSldlnputHandle. liSldOtitputHandle;

COORD Coord = {0,24};

char cMyMessage[80] = "Press any key lo exit";

DWORD dwResult;

BOOL bMyFlag = TRUE;

_INPUTJ?ECORD InputRecord;

char cMyString[l6];

char* cMyButtons[4] - {" LcftButton", " RightButton".

" Mouse moved". " Double Click"}; DWORD dwMyFlag;

FrceConsoleQ;

AllocConsole();

SctConsoleTitlc("Mouse in console session demo program");

hStdlnputHandle = GctStdHandle(STD_INPUT HANDLE);

hStdOutputHandle - GetStdHandle(STD _OUTPUT_HANDLE);

SetConsoleCursorPosition(hStdOutputHandle. Coord);

SetConsoleTextAttribute(liStdOutputHandle, FOREGROUND_RED |

FOREGROUND_GREEN | FOREGROUND^BLUE);

WriteConsole(hStdOutputHand!e, cMyMessagc. strlen(cMyMessagc). &dwRcsult,NULL);

while(bMyFlag)

( i

ReadConsolclnput(hStd!nputHandle, &lnpulRecord, 1, &dwRcsult);

irflnputRccord.EventType -= MOUSE EVENT)

SelConsoleCursorPosition(hStdOtitputHandlc, Coord); SelConsolcTcxtAttribute(liS(dOulputHandle,0); WritcConsole(hSldOutput Handle. cMyMcssage, slrlen(cMyMessage),

&d\vResult, NULL); for( int i = 0; i < 80; i — )

cMyMessagcfi] = 0; Coord. X - 0; Coord. Y - I ;

SclConsolcC'ursorl'ositioiKhStdOiitpul Handle, Coord); slrcaUcMyMcssage. "P(!situ;n - "): strcatfcMy Message.

itoa( input Record. I'.vciit.MouseEvent.dwMuuscPosition.X,

cM>'String. 10)): sircat(cMyMessai:e. ". "); strcaKcMyMessagc.

itoat InputRecord. Event. Mouse Event. dwMouscPosition.Y, cMySlrin». 10));




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



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