Piszę w czystym winapi, właściwie to już skończyłem program. Problem jaki mam to jak reagować na przycisk ESC od strzała, czyli od razu niezależnie od tego co tam w kolejce komunikatow jest i czy program coć aktualnie przetwarza na jakimś poziomie czy nie. Dzięki temu z programu w dowolnej chwili mozna by wyjść ... można bo mam jeszcze drugi problem, że jak juz w końcu po paru sekundach program zareaguje na ESC to nie przerywa i nie zamyka aplikacji. Kod:
switch(message)
{
case WM_CLOSE: DestroyWindow(hWnd); break;
case WM_DESTROY:
DeleteObject(hFont);DeleteObject(hFont2);DeleteObject(hFont3); //i rózne inne Destroye....
//Przywrócenie oryginalnej rozdzielczości systemu
ZeroMemory(&devmode,sizeof(DEVMODE));
devmode.dmSize=sizeof(DEVMODE);
devmode.dmPelsWidth=pulpit.right;
devmode.dmPelsHeight=pulpit.bottom;
devmode.dmBitsPerPel=32;
devmode.dmFields= DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&devmode, CDS_RESET);
PostQuitMessage(0);
while(GetMessage(&::message,NULL,0,0)>0){}
PostQuitMessage(0);
break;
case WM_KEYDOWN:
switch(LOWORD(wParam))
{
case VK_ESCAPE: SendMessage(hWnd,WM_DESTROY,0,0); break;
W WinMain mam m.in.
while(GetMessage(&message,NULL,0,0)>0)
{
TranslateMessage(&message);
DispatchMessage(&message);
//próbowałem tutaj wstawić if(GetAsyncKeyState(VK_ESCAPE)) break; ale nie działało i tak dalej program się wykonuje.
}
SendMessage(::hWnd,WM_DESTROY,0,0);
return (INT) message.wParam;