1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Win API

Тема в разделе "WASM.BEGINNERS", создана пользователем Mark, 30 дек 2011.

  1. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    Не, так нельзя, нужно обрабатывать вот тут

    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {


    switch (message)
    {
    case WM_CREATE:
    MessageBeep(0);
    return 0 ;


    case WM_DESTROY:
    PostQuitMessage (0) ;
    return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
    }

    Это же сообщение, его тут и надо обрабатывать
     
  2. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    317
    LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    switch (msg) /* Обработчик событий*/
    {
    case WM_DESTROY: /* Если сообщ. О выходе */
    PostQuitMessage(0); /* ВЫХОДИМ */
    break;
    case WM_RBUTTONDOWN:
    {
    MessageBox(...);
    }

    break;

    default:
    return DefWindowProc(hwnd,msg,wParam,lParam); /* ????? */
    }

    return 0;
    }
     
  3. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    #include <windows.h>

    HINSTANCE hInst;
    HWND hwnd; /* Переменные */

    LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    switch (msg) /* Обработчик событий*/
    {
    case WM_DESTROY: /* Если сообщ. О выходе */
    PostQuitMessage(0); /* ВЫХОДИМ */
    break;

    default:
    return DefWindowProc(hwnd,msg,wParam,lParam); /* Стандартный обрабочик системы для сообщений. ЛУчше свой писать */
    }

    return 0;
    }

    BOOL InitClass(void)
    {
    WNDCLASS wc; /* Структура */
    memset(&wc,0,sizeof(WNDCLASS)); /* Выделяем байты по размеру WNDCLASS *-----------НеТ -заполняем
    нялями, то биш очищаем/
    wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; /*СТИЛЬ */
    wc.lpfnWndProc = (WNDPROC)WndProc; /* Процедура*/
    wc.hInstance = hInst; /* Экземпляр , текущий получен м ВинМэйн функции */
    wc.hbrBackground = (HBRUSH)(30); /* ФОН */
    wc.lpszClassName = "WndClass"; /* ИМЯ КЛАССА */
    wc.hCursor = LoadCursor(NULL,IDC_ARROW); /* Курсор */
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Иконка */

    if (!RegisterClass(&wc)) return 0; /* Если ошибка сохраняем 0 ----------выходим*/
    return 1;
    }

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
    {
    MSG msg; /* Переменная для хранения событий */
    hInst = hInstance; /* уже сказал */

    if (!InitClass()) /* Если ошибка - выходим. */
    {
    MessageBox(NULL, "Error", "Niiauaiea", 0); /* Сообщение об ошибке */
    return 0; /* ВЫХОД */
    }

    hwnd = CreateWindow("WndClass","ПРОГА WinAPI.", /* Окно */
    WS_MINIMIZEBOX|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN| /* Параметры */
    WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME,
    CW_USEDEFAULT,0,CW_USEDEFAULT,0,
    NULL, /* ???? *Эээээээ. тут где то должны быть координаты окга где они? разве их нет в обычной структуре?/
    NULL, /* ???? */
    hInst, /* ???? */
    NULL); /* ???? */
    ShowWindow(hwnd, SW_SHOW); /* Показываем окно */

    while (GetMessage(&msg,NULL,0,0)) /*Получаем сообщение из очереди */
    {
    TranslateMessage(&msg); /* Обработка вирт клавиш */
    DispatchMessage(&msg); /* Отправить сообшение обработчику CALLBACK WndProc */
    }

    return msg.wParam; /* ???? */
    }
     
  4. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    return msg.wParam; /* ???? */ вернули из функции знпчение, из структуры msg
     
  5. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    1) Учи английский. Все на англ. Я сам это поздно понял. Не мурррр(((
    2)Читай MSDN время быстрого интернета настало
    3)СКачай студию 2003 , 2005, установи локальный МСДН - можно стянуть с рутрекера
     
  6. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Ну ругайтесь :dntknw:.

    В гугле чет нету. Как создать простую кнопку? Вот есть окно. Там просто кнопку. Даже можно без свойств. ПРям в родительском.
     
  7. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    Кто ругется то :D
     
  8. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    Кнопка тоже окно!!! Нужно просто указать класс -Батон
     
  9. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    http://www.hackzona.ru/hz.php?name=News&file=article&sid=9141

    button=CreateWindow("button","Кнопка №1",WS_VISIBLE|WS_CHILD,240,205,28,28,hwnd,(HMENU)ID_BUTTON1,NULL,NULL);
     
  10. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
  11. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    SDK уже качаю. Вот скажите, как приписать действие кнопке? Я так понимаю, что через обработчик событий?
     
  12. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Копайте сообщение WM_COMMAND родительского окна
     
  13. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Спасибо) А не скажите, как приписать разные действия двум кнопкам? Ведь это только одной.
     
  14. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.467
    Адрес:
    Россия
    Написать 2 класса с разными процедурами обработки. И написать несколько процедур обработки. Марк. Вы Петцольда читали Хоть?
     
  15. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    BN_CLICKED Notification

    --------------------------------------------------------------------------------

    Sent when the user clicks a button.

    The parent window of the button receives the BN_CLICKED notification code through the WM_COMMAND message.


    Syntax

    BN_CLICKED

    WPARAM wParam
    LPARAM lParam;

    Parameters

    wParam
    The low-order word contains the button's control identifier. The high-order word specifies the notification message.
    lParam
    A handle to the button.
    Return Value

    No return value.
     
  16. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Все есть SDK..
     
  17. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    А можно на примере?)
     
  18. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Да, и еще. Пробовал PlaySound.

    PlaySound("file.wav", NULL, SND_FILENAME | SND_ASYNC);

    Компилятор ругается:
     
  19. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Подключи Winmm.lib и перестань мучать форум подобными вопросами.
     
  20. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    dll не подключен вот и ругается