Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как в c++ отследить мышь


Автор: dubik55 17.10.2011, 02:45
Нужно написать вот такую ​​программу на С++: после запуска программы, когда курсор отъехал хотя бы на 1 пиксель, то проигрывается аудио файл, который подключается к программе. 
Подскажите, пожалуйста, как написать такой код. Или дайте исходник. 
Спасибо.

Автор: Dem_max 17.10.2011, 03:10
AutoHotkey

http://ru.wikipedia.org/wiki/AutoHotkey

Автор: dubik55 17.10.2011, 04:26
Автохоткеем то можно сделать такое, но мне нужно именно в С++. Кто знает, напишите код, пожалуйста. Буду очень благодарен.

Автор: vol4ek 17.10.2011, 16:59
Код

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpszCmdLine,int nCmdShow)
{    
    MSG msg;
    WNDCLASS wc;
    wc.style = 0;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon (NULL,IDI_WARNING);
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = 0;
    wc.lpszClassName =L"Class";
    if(!RegisterClass(&wc))
        return 0;
    
   HWND hWnd = CreateWindow(L"Class",
        L"title", 
        WS_OVERLAPPEDWINDOW, 
        0,
        0, 
        500,
        500,
        NULL,
        NULL, 
        hInstance,
        NULL);

    

    if(!hWnd) return 0;
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
    while(GetMessage(&msg,0,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    return 0;
};

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_CREATE:
        break;
    case WM_MOUSEMOVE:
        {
            Beep(3000,100);     // здесь твой код воспроизведения -----------------------
            break;
        }
    
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_PAINT:
        break;
    default:
        return DefWindowProc(hWnd,message,wParam,lParam);

    }
    return 0;
}

Автор: dubik55 19.10.2011, 09:46
Цитата(vol4ek @ 17.10.2011,  16:59)
Код

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpszCmdLine,int nCmdShow)
{    
    MSG msg;
    WNDCLASS wc;
    wc.style = 0;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon (NULL,IDI_WARNING);
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = 0;
    wc.lpszClassName =L"Class";
    if(!RegisterClass(&wc))
        return 0;
    
   HWND hWnd = CreateWindow(L"Class",
        L"title", 
        WS_OVERLAPPEDWINDOW, 
        0,
        0, 
        500,
        500,
        NULL,
        NULL, 
        hInstance,
        NULL);

    

    if(!hWnd) return 0;
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
    while(GetMessage(&msg,0,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    return 0;
};

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_CREATE:
        break;
    case WM_MOUSEMOVE:
        {
            Beep(3000,100);     // здесь твой код воспроизведения -----------------------
            break;
        }
    
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_PAINT:
        break;
    default:
        return DefWindowProc(hWnd,message,wParam,lParam);

    }
    return 0;
}

Большое спасибо.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)