Buongiorno a tutti,
recentemente ho iniziato a cimentarmi nella gestione della grafica di base in console(setpixel, lineto, ...) creando un programma che grafica funzioni goniometriche con una variabile.
Tuttavia, necessitando di avere sia un riferimento alla finestra che un evento(mostrare le coordinate del mouse) sorgono dei problemi:
codice:
const wchar_t* finestra = L"Grafici";
SetConsoleTitle(finestra); //Generazione nuova finestra console "Grafici"
HWND hWnd = FindWindow(NULL, finestra);
HDC console = GetDC(hWnd);
ShowWindow(hWnd,SW_SHOWMAXIMIZED);
HANDLE hStdInput,hStdOutput,hEvent;
INPUT_RECORD ir[128];
DWORD nRead;
COORD xy; UINT i;
hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE);
FlushConsoleInputBuffer(console); //svuota lo stream in input
hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
HANDLE handles[2] = {hEvent, hStdInput};
void graph(); //funzione esterna in DLL
graph(); // pre graficare la funzione inserita
while(WaitForMultipleObjects(2,handles,FALSE,INFINITE)) //attende per input
{
ReadConsoleInput(hStdInput,ir,128,&nRead);
for(i=0;i<nRead;i++)
{
switch(ir[i].EventType)
{
case KEY_EVENT: //esce dal ciclo alla pressione di un tasto
break; break;
case MOUSE_EVENT:
xy.X=0, xy.Y=1;
SetConsoleCursorPosition(hStdOutput,xy);
printf
(
"%.3d\t%.3d",
ir[i].Event.MouseEvent.dwMousePosition.X, //output coordinate mouse
ir[i].Event.MouseEvent.dwMousePosition.Y
);
break;
}
}
};
Orbene, appena termina la funzione graph(), che si basa sostanzialmente su un parser e sulla funzione SetPixelV, la finestra console si blocca. Quale potrebbe essere il problema?
Grazie