Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11595
Последний выпуск: 19.06.2015

Win32 api

85K
03 октября 2012 года
asd9292
4 / / 03.10.2012
Код:
#include <windows.h>
    #include <string.h>
    #include <stdio.h>
 
    LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
    LRESULT CALLBACK WindowFunc2(HWND, UINT, WPARAM, LPARAM);
 
    char szWinName[] =  "MyWin";
    char szWinName1[] = "MyWin";
    char str[255] = "";
 
    HWND hwnd;  
    HWND hwnd2;
 
    int X=200, Y=200;

    int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
    {
    MSG msg;        
    WNDCLASSEX wcl, wcl1;  
 
    wcl.hInstance = hThisInst;    
    wcl.lpszClassName = szWinName;  
    wcl.lpfnWndProc = WindowFunc;  
    wcl.style = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;                            // Двойной щелчек на WM_LBUTTONDOWN для родительского  
    wcl.cbSize = sizeof(WNDCLASSEX);    
 
    wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
 
    wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcl.lpszMenuName = NULL;            
    wcl.cbClsExtra = 0;    
    wcl.cbWndExtra = 0;    
    wcl.hbrBackground = CreateSolidBrush(RGB(0,40,40));
 
    wcl1=wcl;
 
    wcl1.lpszClassName = "1";
    wcl1.lpfnWndProc = WindowFunc2;
 
    wcl1.hbrBackground = CreateSolidBrush(RGB(133, 133, 133));
 
    wcl1.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;                            // Двойной щелчек на WM_LBUTTONDOWN для дочернего
   
    if (!RegisterClassEx(&wcl) | !RegisterClassEx(&wcl1)) return 0;
 
    hwnd = CreateWindow(szWinName,            
    "API application",          
    WS_OVERLAPPEDWINDOW,    
    200,
    200,
    600,    
    620,    
    HWND_DESKTOP,  
    NULL,      
    hThisInst,  
    NULL,
    );
 
    hwnd2 = CreateWindow("1",              
    "API application",
    WS_OVERLAPPEDWINDOW | WS_CHILD,
    40,
    40,
    500,
    500,
    hwnd,  
    NULL,
    hThisInst,
    NULL
    );
 
    ShowWindow (hwnd, SW_SHOW);
    ShowWindow (hwnd2, SW_HIDE);
 
    ShowWindow(hwnd, nWinMode);
    UpdateWindow(hwnd);
 
    while (GetMessage(&msg, NULL, 0,0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);  
    }
    return msg.wParam;
    }          
 
LRESULT CALLBACK WindowFunc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc;    
 
    switch (message)
    {
    case WM_CREATE:
     
        SetTimer(hwnd , 0 , 3000 ,NULL); break;
     
        case WM_TIMER:
         
        ShowWindow(hwnd2,SW_SHOW); break;
           
 
    case WM_CHAR: break;
    case WM_LBUTTONDOWN: break;

        case WM_KEYDOWN:
    {
        switch(wParam)
        {
        case VK_LEFT:
            {
            hdc = GetDC(hWnd);
            X-=5;
            MoveWindow(hwnd,X,Y,600,620,TRUE);
            }
            break;
        case VK_RIGHT:
            {
            hdc = GetDC(hWnd);
            X+=5;
            MoveWindow(hwnd,X,Y,600,620,TRUE);
            }
            break;
        case VK_UP:
            {
            hdc = GetDC(hWnd);
            Y-=5;
            MoveWindow(hwnd,X,Y,600,620,TRUE);
            }
            break;
        case VK_DOWN:
            {
            hdc = GetDC(hWnd);
            Y+=5;
            MoveWindow(hwnd,X,Y,600,620,TRUE);
            }
            break;

        }
        break;
           
    }

    case WM_LBUTTONDBLCLK:
        {  
 
    ShowWindow( hWnd, SW_SHOWMAXIMIZED);
    UpdateWindow(hWnd);

    return 0;
        }
 
    case WM_DESTROY:
 
        if (hWnd == hwnd) PostQuitMessage(0); break;
 
    default:
 
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }
 
LRESULT CALLBACK WindowFunc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc;    
 
    switch (message)
    {

   
 
    case WM_CREATE:
 
    SetTimer(hwnd , 0 , 3000 ,NULL); break;
 
    case WM_CHAR: break;
    case WM_LBUTTONDOWN: break;
    case WM_LBUTTONDBLCLK:
        {  
 
    ShowWindow( hWnd, SW_SHOWMAXIMIZED);
    UpdateWindow(hWnd);
    return 0;
        }

    case WM_RBUTTONDOWN:
       
    {
 
      WORD xPos, yPos, nSize;
 
      TCHAR szBuf[100];      
 
      // Сохраняем координаты курсора мыши
 
      xPos   = LOWORD(lParam);
      yPos   = HIWORD(lParam);
 
      hdc = GetDC(hWnd);
 
      // Подготавливаем текстовую строку, содержащую
      // координаты курсора мыши
 
      nSize = wsprintf(szBuf, TEXT("(%d, %d)"), xPos, yPos);
 
      // Выводим координаты курсора мыши
      // в точке, соответствующей положению
      // курсора мыши
 
      TextOut(hdc, xPos, yPos, szBuf, nSize);
 
      ReleaseDC(hWnd, hdc);
      return 0;
 
     }
 
    case WM_DESTROY:
 
        if (hWnd == hwnd2) PostQuitMessage(0); break;
 
    default:
 
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }

Нужно реализовать;

1. Клавиатура.
1.1. Механизм сообщений от клавиатуры.
1.2. Коды OEM, ANSI, ASCII, виртуальные коды.
1.3. Виртуальные клавиши.
1.4. Символьные сообщения.
1.5. Системные сообщения.
1.6. Преобразование кодов.
1.7. Как отличить нажатия совпадающих клавиш.
1.8. Как узнать ввод строчных и прописных букв.
1.9. Фокус ввода.

2. Мышь.
2.1. Захват и освобождение окном мыши.
2.2. Обработка сообщений от мыши.
2.3. Координаты x, y.
2.4. Курсор мыши. Управление курсором.
2.5. Сообщения мыши в клиентской и неклиентской области окна.

3. Таймер.
3.1. Установка и снятие таймера.
3.2. Функция таймера.
4
03 октября 2012 года
mike
3.7K / / 01.10.2002
А проблема то в чем?
85K
03 октября 2012 года
asd9292
4 / / 03.10.2012
Проблема, в том, что я ваще не щарю, и работаю на другом языке а уж тем болеее на другой платформе(,
85K
03 октября 2012 года
asd9292
4 / / 03.10.2012
Я конечно все что допер написал, а остальной хз, так прошу знающих людей мне помочь)
86K
04 октября 2012 года
Blond_11
1 / / 04.10.2012
А вот случайно Вы не в БНТУ учитесь? Учитель не Разорёнов?
85K
04 октября 2012 года
asd9292
4 / / 03.10.2012
Да нет не он

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог