Win API

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

  1. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Качай для студии МСДН с рутрекера или установи сдк
     
  2. yashechka

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

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

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Дело в том, что там только то, что нужно вписать. Чистого примера нет. А я так например DrawText не понял.
     
  4. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    на гугле есть все.Я тебе говорю. Тебе нужно основы понять что да как. Я тебе могу накатать то что тебе даст это? Ты какой цели хочешь? Потом когда сложнее задача будет и никто знать её не сможет, тебе никто не поможет, придется самому писать учиться. Тебе лет то сколько?
     
  5. Mark

    Mark Марк

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

    12
     
  6. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Mark,
    с SDK идет куча примеров. Вот, например:

    Код (Text):
    1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
    2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
    3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
    4. // PARTICULAR PURPOSE.
    5. //
    6. // Copyright (c) Microsoft Corporation. All rights reserved
    7.  
    8.  
    9. #include "stdafx.h"
    10. #include "WinSDKVer_Button.h"
    11.  
    12. #define MAX_LOADSTRING 100
    13.  
    14. // Split button
    15. const int IDC_BTN_BUTTONA = 201;
    16. const int IDC_BTN_BUTTONB = 202;
    17.  
    18. // Global Variables:
    19. HINSTANCE hInst;                                // Current instance
    20. HWND hWnd, hWndButtonMain, hWndButtonDropDown;  // Split-buttons controls
    21. TCHAR szTitle[MAX_LOADSTRING];                  // The title bar text
    22. TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name
    23.  
    24. // Forward declarations of functions included in this code module:
    25. ATOM                MyRegisterClass(HINSTANCE hInstance);
    26. BOOL                InitInstance(HINSTANCE, int);
    27. LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
    28. INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
    29.  
    30. int APIENTRY _tWinMain(HINSTANCE hInstance,
    31.                      HINSTANCE hPrevInstance,
    32.                      LPTSTR    lpCmdLine,
    33.                      int       nCmdShow)
    34. {
    35.     UNREFERENCED_PARAMETER(hPrevInstance);
    36.     UNREFERENCED_PARAMETER(lpCmdLine);
    37.  
    38.     MSG msg;
    39.     HACCEL hAccelTable;
    40.  
    41.     // Initialize global strings
    42.     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    43.     LoadString(hInstance, IDC_WINSDKVER, szWindowClass, MAX_LOADSTRING);
    44.     MyRegisterClass(hInstance);
    45.  
    46.     // Perform application initialization:
    47.     if (!InitInstance (hInstance, nCmdShow))
    48.     {
    49.         return FALSE;
    50.     }
    51.  
    52.     hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINSDKVER));
    53.  
    54.     // Main message loop:
    55.     while (GetMessage(&msg, NULL, 0, 0))
    56.     {
    57.         if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    58.         {
    59.             TranslateMessage(&msg);
    60.             DispatchMessage(&msg);
    61.         }
    62.     }
    63.  
    64.     return (int) msg.wParam;
    65. }
    66.  
    67.  
    68.  
    69. //
    70. //  FUNCTION: MyRegisterClass()
    71. //
    72. //  PURPOSE: Registers the window class.
    73. //
    74. //  COMMENTS:
    75. //
    76. //    This function and its usage are only necessary if you want this code
    77. //    to be compatible with Win32 systems prior to the 'RegisterClassEx'
    78. //    function that was added to Windows 95. It is important to call this function
    79. //    so that the application will get 'well formed' small icons associated
    80. //    with it.
    81. //
    82. ATOM MyRegisterClass(HINSTANCE hInstance)
    83. {
    84.     WNDCLASSEX wcex;
    85.  
    86.     wcex.cbSize = sizeof(WNDCLASSEX);
    87.  
    88.     wcex.style          = CS_HREDRAW | CS_VREDRAW;
    89.     wcex.lpfnWndProc    = WndProc;
    90.     wcex.cbClsExtra     = 0;
    91.     wcex.cbWndExtra     = 0;
    92.     wcex.hInstance      = hInstance;
    93.     wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINSDKVER));
    94.     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    95.     wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    96.     wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_WINSDKVER);
    97.     wcex.lpszClassName  = szWindowClass;
    98.     wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    99.  
    100.     return RegisterClassEx(&wcex);
    101. }
    102.  
    103. //
    104. //   FUNCTION: InitInstance(HINSTANCE, int)
    105. //
    106. //   PURPOSE: Saves instance handle and creates main window
    107. //
    108. //   COMMENTS:
    109. //
    110. //        In this function, we save the instance handle in a global variable and
    111. //        create and display the main program window.
    112. //
    113. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    114. {
    115.    hInst = hInstance; // Store instance handle in our global variable
    116.  
    117.    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
    118.       CW_USEDEFAULT, 0, 300, 300, NULL, NULL, hInstance, NULL);
    119.  
    120.    if (!hWnd)
    121.    {
    122.       return FALSE;
    123.    }
    124.  
    125.    // Create a split button control
    126.    CreateSplitButton(hWnd);
    127.    
    128.    ShowWindow(hWnd, nCmdShow);
    129.    UpdateWindow(hWnd);
    130.  
    131.    return TRUE;
    132. }
    133.  
    134. //
    135. //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
    136. //
    137. //  PURPOSE:  Processes messages for the main window.
    138. //
    139. //  WM_COMMAND  - process the application menu
    140. //  WM_PAINT    - Paint the main window
    141. //  WM_DESTROY  - post a quit message and return
    142. //
    143. //
    144. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    145. {
    146.     int wmId, wmEvent;
    147.     PAINTSTRUCT ps;
    148.     HDC hdc;
    149.  
    150.     switch (message)
    151.     {
    152.     case WM_COMMAND:
    153.         wmId    = LOWORD(wParam);
    154.         wmEvent = HIWORD(wParam);
    155.        
    156.         switch (wmId)
    157.         {
    158.         case IDC_BTN_BUTTONA:
    159.             if (wmEvent == BN_CLICKED)
    160.             {
    161.                 // Notify user that they clicked the button
    162.                 MessageBox(hWnd, L"Option A", L"Caption", MB_OK);
    163.             }
    164.             break;
    165. #if WINVER < 0x0600
    166.         case IDC_BTN_BUTTONB:
    167.             if (wmEvent == BN_CLICKED)
    168.             {
    169.                 // Display drop down menu for downlevel button
    170.                 DisplayDropDownMenu();
    171.             }
    172.             break;
    173. #endif
    174.         case IDM_ABOUT:
    175.             DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
    176.             break;
    177.         case IDM_EXIT:
    178.             DestroyWindow(hWnd);
    179.             break;
    180.         case ID_OPTION1_OPTIONB:
    181.             // Notify user that they clicked one down-down menu options
    182.             MessageBox(hWnd, L"Option B", L"Caption", MB_OK);
    183.             break;
    184.         case ID_OPTION1_OPTIONC:
    185.             // Notify user that they clicked one down-down menu options
    186.             MessageBox(hWnd, L"Option C", L"Caption", MB_OK);
    187.             break;
    188.         default:
    189.             return DefWindowProc(hWnd, message, wParam, lParam);
    190.         }
    191.         break;
    192.     case WM_PAINT:
    193.         hdc = BeginPaint(hWnd, &ps);
    194.         EndPaint(hWnd, &ps);
    195.         break;
    196.     case WM_DESTROY:
    197.         PostQuitMessage(0);
    198.         break;
    199.     case WM_NOTIFY:
    200. #if WINVER >= 0x0600
    201.         switch (((LPNMHDR)lParam)->code)
    202.         {
    203.             // Display drop-down for Vista style split button
    204.             case BCN_DROPDOWN:
    205.                 DisplayDropDownMenu();
    206.                 break;
    207.         }
    208. #endif
    209.     default:
    210.         return DefWindowProc(hWnd, message, wParam, lParam);
    211.     }
    212.     return 0;
    213. }
    214.  
    215. // Message handler for about box.
    216. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    217. {
    218.     UNREFERENCED_PARAMETER(lParam);
    219.     switch (message)
    220.     {
    221.     case WM_INITDIALOG:
    222.         return (INT_PTR)TRUE;
    223.  
    224.     case WM_COMMAND:
    225.         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    226.         {
    227.             EndDialog(hDlg, LOWORD(wParam));
    228.             return (INT_PTR)TRUE;
    229.         }
    230.         break;
    231.     }
    232.     return (INT_PTR)FALSE;
    233. }
    234.  
    235. VOID CreateSplitButton(HWND hParent)
    236. {
    237.     // The BS_SPLITBUTTON style is supported for on Vista and later.
    238.     // We can use the value of WINVER to determine how to create the
    239.     // split button control.
    240. #if WINVER >= 0x0600
    241.     // Create a split button using BS_SPLITBUTTON
    242.     hWndButtonMain = CreateWindow(L"Button", L"Vista",
    243.         WS_CHILD | WS_VISIBLE | BS_SPLITBUTTON,
    244.         10, 10, 120, 50,
    245.         hParent, (HMENU)IDC_BTN_BUTTONA, hInst, NULL);
    246. #else
    247.     // Create a split button using two separate button controls
    248.     hWndButtonMain = CreateWindow(L"Button", L"Downlevel",
    249.         WS_CHILD | WS_VISIBLE,
    250.         10, 10, 100, 50,
    251.         hParent, (HMENU)IDC_BTN_BUTTONA, hInst, NULL);
    252.    
    253.     hWndButtonDropDown = CreateWindow(L"Button", L".", WS_CHILD | WS_VISIBLE,
    254.        105, 10, 20, 50,
    255.        hParent, (HMENU)IDC_BTN_BUTTONB, hInst, NULL);
    256. #endif
    257. }
    258.  
    259. VOID DisplayDropDownMenu()
    260. {
    261.     RECT rc;
    262.    
    263.     // Get the bounding rectangle of the client area
    264.     GetWindowRect(hWndButtonMain, &rc);
    265.    
    266.     HMENU hmenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1));
    267.     HMENU hmenuTrackPopup;
    268.                
    269.     hmenuTrackPopup = GetSubMenu(hmenu, 0);
    270.     TrackPopupMenuEx(hmenuTrackPopup, TPM_RIGHTBUTTON, rc.left, rc.bottom, hWnd, NULL);
    271.     DestroyMenu(hmenu);
    272. }
     
  7. Mark

    Mark Марк

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

    SDK я установил. Где эти примеры? О_О
     
  8. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    время начинать учить английский когда мне 13 было я ничего кроме мортала не знал
     
  9. Mark

    Mark Марк

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

    rttgedt Антон

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

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Так как создать текстовое поле?
     
  12. rttgedt

    rttgedt Антон

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

    Mark Марк

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

     
  14. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Зато SDK сможет ;)
     
  15. yashechka

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

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

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

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

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Черт а де там искать?)
     
  18. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Я тебе вечером видео урок сниму.))) С тебя 2 бака.
     
  19. Mark

    Mark Марк

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

    А как сделать сохранение в переменной?)
     
  20. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Так что, в переменной сохранить нельзя? :dntknw: