Win API

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

  1. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    http://wasm.ru/article.php?article=1001001
    Попробуй это читать и сразу в си код переводить,много скилла получишь и экспы
     
  2. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Вывод получилось так:

    Про функции обязательно прочитаю.

    Еще вопрос. Как сделать ввод от пользователя, и сохранение в переменной?
     
  3. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    edit control
     
  4. Mark

    Mark Марк

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

    Исправите ошибки?
     
  5. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Прикрепи файл весь с исходником.
     
  6. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Код (Text):
    1. #include <windows.h>
    2. #include <mmsystem.h.>
    3.  
    4.  
    5. #pragma comment(lib, "winmm.lib")              /* Подключаем библиотеку для Play Sound */
    6.  
    7.  
    8. #define ID_BUTTON1 500                              /* Директива для кнопки */
    9.  
    10. HINSTANCE hInst;
    11. HWND hwnd;
    12. HWND button;                                     /* Переменные */
    13. HDC hdcj;
    14. POINT pt;
    15.  
    16.  
    17. LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)              /* Обработчик событий */
    18. {
    19.     switch (msg)                             /* Ветвление, зависящие от событи, поступившего от ОС */            /* msg - переменная, хранящая текущее событие */  
    20.     {
    21.     case WM_DESTROY:            /* От ОС поступило сообщение о выходе */
    22.           PostQuitMessage(0);
    23.           break;
    24.          
    25.     case WM_LBUTTONDOWN:            /* Нажата левая кнопка мыши в клиентской области */
    26.     {
    27.           MessageBeep(0);       /* Звук */
    28.           MessageBox(NULL, L"Никто кликать вам не разрешал!", L"Error", 16);         /* Сообщение */
    29.        
    30.           break;
    31.     }  
    32.    
    33.  
    34.      
    35.     case WM_COMMAND:                                       /* Нажатие на кнопку */
    36.     {
    37.           MessageBox(NULL, L"Сейчас будет проиграна мелодия", L"Сообщение", 0);
    38.  
    39.          
    40.  
    41.           PlaySound(L"р.wav", NULL, SND_ASYNC | SND_FILENAME );  /* Играем звук */      
    42.           break;
    43.     }
    44.    
    45.    
    46.     default:
    47.           return DefWindowProc(hwnd,msg,wParam,lParam);    /* Стандартный обработчик событий */
    48.     }
    49.    
    50. return 0;
    51. }
    52.  
    53.  
    54.      
    55.  
    56.  
    57. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)              /* Главное окно, главная функция */
    58. {
    59.     WNDCLASS wc;                                                                                       /* Структура */
    60.      memset(&wc,0,sizeof(WNDCLASS));          /* Выделение дом. битов по размеру  WNDCLASS */
    61.      wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;  /* Стиль */
    62.      wc.lpfnWndProc = (WNDPROC)WndProc;                                          /* Процедура обработки */
    63.      wc.hInstance = hInst;                   /* Текущий хэндл */
    64.      wc.hbrBackground = (HBRUSH)(0);    /* Фон */
    65.      wc.lpszClassName = L"WndClass";                 /* ИМЯ */
    66.      wc.hCursor = LoadCursor(NULL, IDC_ARROW);        /* Курсор */
    67.      wc.hIcon = LoadIcon(NULL, IDI_EXCLAMATION);     /* Иконка */
    68.      
    69.      
    70.      if (!RegisterClass(&wc)) return 0;            /* Если ошибка возвращаем , выходим */
    71.    
    72.  
    73.     MSG ms;
    74.     MSG msg;                       /* Переменные */
    75.     hInst = hInstance;  
    76.    
    77.    
    78.    
    79.    
    80.     hwnd = CreateWindow(L"WndClass",L"Click",                     /* Создаем окно */
    81.     WS_MINIMIZEBOX|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|      
    82.     WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME,   /* Параметры */
    83.     CW_USEDEFAULT,0,CW_USEDEFAULT,0,
    84.     0,        
    85.     0,          
    86.     hInst,        
    87.     NULL);    
    88.    
    89.     ShowWindow(hwnd, SW_SHOW);                      /* Показываем окно */
    90.    
    91.     button = CreateWindow(L"button",L"МУЗЫКА",WS_VISIBLE|WS_CHILD,5,5,400,30,hwnd,(HMENU)ID_BUTTON1,NULL,NULL);    /* Создаем кнопку */
    92.    
    93.    
    94.    
    95.  
    96. wchar_t *str = ('b');
    97.  
    98. DrawText(hdcj, str, sizeof("Наконец!"), lpRect, DT_CENTER);
    99.  
    100.    
    101.    
    102.    while (GetMessage(&msg,NULL,0,0))      /* Перевод сообщений */
    103.    {
    104.        TranslateMessage(&msg);
    105.        DispatchMessage(&msg);
    106.    }
    107.  
    108.    return msg.wParam;
    109. }
     
  7. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    используй расширееный класс окга, это чет на глаз давит
    не все поля запонены
    wchar_t *str = ('b');
    у тебя один символ, зачем указатель, зачем скобки, используй чар просто, зачем тебя расширенный чар?
     
  8. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    1) А что за расширенный класс?

    2) Так как с помощью DrawText вывести на экран "Привет"?

    3)
    Какие пустые?
     
  9. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Почиатй про WM_PAINT
    В неё надо рисовать

    case WM_PAINT:
    hDC=BeginPaint(hWnd,&ps);
    GetClientRect(hWnd,&rect);
    EndPaint(hWnd,&ps);

    break;
     
  10. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    А, все, щас попробую)
     
  11. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    typedef struct {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCTSTR lpszMenuName;
    LPCTSTR lpszClassName;
    HICON hIconSm;
    } WNDCLASSEX, *PWNDCLASSEX;
     
  12. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    http://vsokovikov.narod.ru/New_MSDN_API/Fonts_text/fn_drawtext.htm
     
  13. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    А что за &ps?
     
  14. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    1) VS ругается: ..., str, вот на str - Аргумент типа char несовместим c параметром типа LPCWSTR

    2) Как сделать lpRect?
     
  15. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    А ты какую студию используешь?
     
  16. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    1) 2010

    2) Так (?):

     
  17. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Указатель на структуру, куда функция возвращает результат.
     
  18. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Лол)) Ты хоть что нитбудь прочитал? Ты какую нибудь литературу читаешь. Бро, думаю у тебя нету базиса. Советую учить Си для начала. В. В. Подбельский в руки и читкать. Угу. И паралельно английский язык. Угу и ещё паралельно. НУ к примеру. Румянцева -Винь Апиь
     
  19. Mark

    Mark Марк

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

    Хорошо, хорошо.

    1) Как вывести текст с помощью DrawText (Покажите на фрагменте?)

    2) Как создать поле ввода от пользователя (Если можно тоже на фрагменте готовом)
     
  20. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Я смотрю, в SDK ты так и не заглянул..