, , . Windows ReadConsoleA
BOOL ReadConsoleA(HANDLE hConsInput, VOID* buffer, DWORD len,
DWORD actlen, VOID* reserved);
. ( ) GetStdHandle STD_INPUT_HANDLE. buffer , len ( buffer). actlen , . ( \n). reserved NULL.
#include <windows.h>
#include <string.h>
#include <stdio.h>
void main()
{char prompt[]="Input any text string:\n";
char text[120]="\nInputing string:\n";
char buffer[80];
DWORD actlen;
HANDLE hstdout,hstdin;
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
if(hstdout==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
hstdin=GetStdHandle(STD_INPUT_HANDLE);
if(hstdin==INVALID_HANDLE_VALUE)
{printf("Error GetStdHandle\n");exit(-1);}
WriteConsoleA(hstdout,prompt,sizeof(prompt),&actlen,NULL);
ReadConsoleA(hstdin,buffer,80,&actlen,NULL);
buffer[actlen]='\0';
strcat(text,buffer);
WriteConsoleA(hstdout,text,strlen(text),&actlen,NULL);
getchar();
CloseHandle(hstdout);
ExitProcess(0);
}
. Windows , . , , (event), . . ( , : , , ..). , . , , , . Windows . ,
Typedef struct _INPUT_RECORD
{ WORD EventType;
Union
{ KEY_EVENT_RECORD KeyEvent;
MOUSE_EVENT_RECORD MouseEvent;
WINDOW_BUFFER_SIZE_RECORD MenuEvent;
FOCUS_EVENT_RECORD FocusEvent;
} Event;
} INPUT_RECORD, *PINPUT_RECORD;
EventType, KEY_EVENT, MOUSE_EVENT, WINDOW_BUFFER_SIZE_EVENT, EVENT, FOCUS_EVENT. , , , , KEY_EVENT. , (unit) KEY_EVENT_RECORD KeyEvent. , KEY_EVENT_RECORD