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:
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?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; } } };
Grazie

Rispondi quotando