Событие мыши: двойное нажатие правой кнопки; В неклиентской области: кнопка минимизации; как это зделать на чистом API? вот текст проги: Код: //============================================================ #include #include #include #include #include #include #include #include #include #include #pragma once #define WIN32_LEAN_AND_MEAN //============================================================ LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,LPARAM lParam ); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS WndClass; MSG msg; HWND hWnd; char szClassName[] = "PGOS2_ART"; WndClass.lpszClassName = szClassName; WndClass.lpfnWndProc = MainWndProc; WndClass.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS; WndClass.hInstance = hInstance; WndClass.hIcon = LoadIcon( NULL, IDI_APPLICATION ); WndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); WndClass.hbrBackground = (HBRUSH)/*CreateSolidBrush(RGB(0,100,0));*/GetStockObject(WHITE_BRUSH); WndClass.lpszMenuName = NULL; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; if(!RegisterClass( &WndClass)) { MessageBox(NULL,"Cannot register class","Error",MB_OK); return 0; } hWnd = CreateWindow( szClassName, "Помазов А.В. ИС-04(З)", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if (!hWnd) { MessageBox(NULL,"Cannot create window","Error",MB_OK); return 0; } ShowWindow( hWnd, nCmdShow ); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //============================================================ LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,LPARAM lParam ) { PAINTSTRUCT PaintStruct; HDC hDC; char sx[256],sy[256]; static int fl = 0 ; static int fl1 = 0 ; static int fl2 = 0 ; static int fl3 = 0 ; POINT Coordinats; hDC = GetDC(hWnd); switch( msg ) { case WM_PAINT: hDC = BeginPaint( hWnd, &PaintStruct ); SetTextColor(hDC,RGB(200,50,100)); TextOut(hDC,10,40,"Событие мыши с удерживаемой клавишей:",strlen("Событие мыши с удерживаемой клавишей:")); SetTextColor(hDC,RGB(0,0,0)); TextOut(hDC,10,60,"Ctrl + Нажатие левой кнопки мыши",strlen("Ctrl + Нажатие левой кнопки мыши")); SetTextColor(hDC,RGB(200,50,100)); TextOut(hDC,10,80,"Событие мыши в неклиентской области:",strlen("Событие мыши в неклиентской области:")); SetTextColor(hDC,RGB(0,0,0)); TextOut(hDC,10,100,"Двойное нажатие правой кнопки на кнопка минимизации ", strlen("Двойное нажатие правой кнопки на кнопка минимизации ")); SetTextColor(hDC,RGB(200,50,100)); TextOut(hDC,10,120,"Событие клавиатуры:",strlen("Событие клавиатуры:")); SetTextColor(hDC,RGB(0,0,0)); TextOut(hDC,10,140,"Отжатие клавиши F11",strlen("Отжатие клавиши F11")); TextOut(hDC,10,160,"получение символа 'A' + Номер-по-журналу",strlen("получение символа 'A' + Номер-по-журналу")); EndPaint( hWnd, &PaintStruct ); return 0; case WM_MOUSEMOVE: Coordinats.x = LOWORD(lParam); Coordinats.y = HIWORD(lParam); ClientToScreen(hWnd,&Coordinats); itoa(Coordinats.x,sx,10); itoa(Coordinats.y,sy,10); TextOut(hDC,10,0,"Экранные координаты х: ",strlen("Экранные координаты х: ")); TextOut(hDC,10,20,"Экранные координаты y: ",strlen("Экранные координаты y: ")); TextOut(hDC,180,0,sx,strlen(sx)); TextOut(hDC,180,20,sy,strlen(sy)); return 0; case WM_LBUTTONDOWN: if (!fl) SetBkColor(hDC,RGB(100,200,200)); else SetBkColor(hDC,RGB(255,255,255)); fl = (fl==0) ? 1:0; if (wParam == 9 ) TextOut(hDC,10,60,"Ctrl + Нажатие левой кнопки мыши",strlen("Ctrl + Нажатие левой кнопки мыши")); return 0; case WM_RBUTTONDBLCLK: if (!fl1) SetBkColor(hDC,RGB(100,200,200)); else SetBkColor(hDC,RGB(255,255,255)); fl1 = (fl1==0) ? 1:0; if (wParam == 2) TextOut(hDC,10,100,"Двойное нажатие правой кнопки на кнопка минимизации ", strlen("Двойное нажатие правой кнопки на кнопка минимизации ")); return 0; case WM_KEYUP: if (!fl2) SetBkColor(hDC,RGB(100,200,200)); else SetBkColor(hDC,RGB(255,255,255)); fl2 = (fl2==0) ? 1:0; if (wParam == VK_F11 ) TextOut(hDC,10,140,"Отжатие клавиши F11",strlen("Отжатие клавиши F11")); if (!fl3) SetBkColor(hDC,RGB(100,200,200)); else SetBkColor(hDC,RGB(255,255,255)); fl3 = (fl3==0) ? 1:0; if (wParam == '6' && GetKeyState('A')<0) TextOut(hDC,10,160,"получение символа 'A' + Номер-по-журналу",strlen("получение символа 'A' + Номер-по-журналу")); return 0; case WM_DESTROY: ReleaseDC(hWnd,hDC); PostQuitMessage( 0 ); return 0; } return DefWindowProc( hWnd, msg, wParam, lParam ); } //============================================================