Создание элементов управления окна

Тема в разделе "WASM.BEGINNERS", создана пользователем Th0r, 18 окт 2006.

  1. Th0r

    Th0r New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2006
    Сообщения:
    5
    Элементы управления окна создаются через CreateWindow(Ex), с заданными предопределенными классами.
    Где можно почитать про эти самые предопределенные классы - в частности интересует список (list) и поле ввода (edit или richedit), их параметры и обработка
    еще интересует обработка быстрых клавиш (accelerators)
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Iczelion, примеры, да и "на русском".
     
  4. je0n

    je0n Maximus Cesar

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    7
    Адрес:
    Russia
    Вот, почитай
    А быстрые клавиши - просто обработка нажатия пимпы.

    This is a C sourcecode for a simple BB1 Windows application with the name BB1CNTRS. This program demonstrates the use of the function CreateWindow for child window controls. The word "controls" means that they were created with a predefined window class such as BUTTON, STATIC, EDIT, and SCROLLBAR rather than registering a new window class. An child window will only be shown if the parent window is visible. Windows keeps track of child windows and updates them along with their parent (download this sourcecode, or download the Windows EXE of this sourcecode).
    Код (Text):
    1. // File...: BB1CNTRS.C (c) SOFTWARE SYSTEMS 1996
    2. // Version: 1.00
    3. // Date...: 04.Oct.1996
    4.  
    5. #include ‹windows.h›
    6.  
    7. #define CHILD1     100
    8. #define CHILD2     200
    9. #define CHILD3     300
    10. #define CHILD4     400
    11. #define CHILD5     500
    12. #define CHILD6     600
    13.                          
    14. HANDLE ghInstance;                  // Global Instance
    15.                          
    16. // Prototyp WindowFunction
    17.  
    18. long FAR PASCAL WndFunction (HWND, WORD, WORD, LONG);
    19.  
    20. //****************************************************************************************
    21.  
    22. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    23. {  
    24.    static char szAppName[]= "BB1-CONTROLS",
    25.                szTitleBar[]= "Title Bar";
    26.    HWND        hwnd;   
    27.    WNDCLASS    wndclass;
    28.    MSG         msg;
    29.      
    30.    // Register Class
    31.  
    32.    ghInstance= hInstance;      
    33.    if (! hPrevInstance) {
    34.       wndclass.style        = CS_HREDRAW | CS_VREDRAW;
    35.       wndclass.lpfnWndProc  = WndFunction;
    36.       wndclass.cbClsExtra   = 0;
    37.       wndclass.cbWndExtra   = 0;
    38.       wndclass.hInstance    = hInstance;
    39.       wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION);
    40.       wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW);
    41.       wndclass.hbrBackground= GetStockObject (WHITE_BRUSH);
    42.       wndclass.lpszMenuName = NULL;
    43.       wndclass.lpszClassName= szAppName;
    44.      
    45.       RegisterClass (&wndclass);
    46.    }
    47.    
    48.    // Create Window with 320 * 240 dots at postion x=0, y=0 and show Window
    49.    
    50.    hwnd= CreateWindow (szAppName,
    51.                        szTitleBar,
    52.                        WS_OVERLAPPEDWINDOW,
    53.                        0,                   // x position for this window
    54.                        0,                   // y position for this window
    55.                        320,                 // window width is 320 dots
    56.                        240,                 // window height is 240 dots
    57.                        NULL,              
    58.                        NULL,              
    59.                        hInstance,          
    60.                        NULL);
    61.  
    62.    ShowWindow   (hwnd, nCmdShow);
    63.    UpdateWindow (hwnd);
    64.  
    65.    // Dispatch Message or exit program
    66.    
    67.    while (GetMessage (&msg, NULL, 0, 0)) {
    68.       TranslateMessage (&msg);
    69.       DispatchMessage  (&msg);
    70.    }
    71.    return (msg.wParam);
    72. }
    73.  
    74. //**************************************************************************
    75.  
    76. long FAR PASCAL WndFunction (HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)
    77. {    
    78.    HWND hButton, hCheckBox, hRadioButton, hStaticText, hEdit, hScroll;
    79.      
    80.    switch (wMsg) {
    81.      
    82.       // Create and show controls/child windows: 1.) PushButton Control
    83.      
    84.       case WM_PAINT: hButton= CreateWindow ("BUTTON", "Button",
    85.                                             WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    86.                                             10, 10, 100, 40, hWnd, CHILD1,
    87.                                             ghInstance, NULL);
    88.                      ShowWindow (hButton, SW_SHOW);
    89.                      
    90.                      // 2.) CheckBox Control
    91.                          
    92.                      hCheckBox= CreateWindow ("BUTTON", "CheckBox",
    93.                                               WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
    94.                                               180, 10, 120, 40, hWnd, CHILD2,
    95.                                               ghInstance, NULL);
    96.                      ShowWindow (hCheckBox, SW_SHOW);  
    97.                      
    98.                      // 3.) RadioButton Control
    99.                      
    100.                      hRadioButton= CreateWindow ("BUTTON", "RadioButton",
    101.                                                  WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
    102.                                                  180, 45, 120, 40, hWnd, CHILD3,
    103.                                                  ghInstance, NULL);
    104.                      ShowWindow (hRadioButton, SW_SHOW);
    105.                          
    106.                      // 4.) Static Text Control
    107.                      
    108.                      hStaticText= CreateWindow ("STATIC", "StaticTextControl",
    109.                                                 WS_CHILD | WS_VISIBLE,
    110.                                                 10, 65, 160, 40, hWnd, CHILD4,
    111.                                                 ghInstance, NULL);
    112.                      ShowWindow (hStaticText, SW_SHOW);                          
    113.                      
    114.                      // 5.) Edit Control
    115.                                                
    116.                      hEdit= CreateWindow ("EDIT", "Edit Control",
    117.                                           WS_CHILD | WS_VISIBLE | WS_BORDER,
    118.                                           10, 100, 290, 40, hWnd, CHILD5,
    119.                                           ghInstance, NULL);
    120.                      ShowWindow (hEdit, SW_SHOW);                    
    121.                      
    122.                      // 6.) Scroll Bar
    123.                                          
    124.                      hScroll= CreateWindow ("SCROLLBAR", "",
    125.                                             WS_CHILD | WS_VISIBLE | SBS_HORZ,
    126.                                             10, 150, 290, 40, hWnd, CHILD6,
    127.                                             ghInstance, NULL);
    128.                      ShowWindow (hScroll, SW_SHOW);                      
    129.                      break;
    130.                      
    131.       // Destroy Window
    132.      
    133.       case WM_DESTROY: PostQuitMessage (0);
    134.                        return (0);
    135.    }
    136.    return (DefWindowProc (hWnd, wMsg, wParam, lParam));
    137. }
    For creating child windows with CreateWindow the WS_CHILD flag is used in each call. CreateWindow also needs the parent window handle hWnd. This allows CreateWindow to make the correct linkup of child and parent window. Notice that the first parameter in each of the calls to CreateWindow is a word that specifies the type of child window control being created: BUTTON, STATIC, EDIT, and SCROLLBAR. The second parameter is the text string that will show up inside the control or on the side of the radio button or check-box button. Scroll bars do not have text, so a null string is included.
     
  5. kDenis

    kDenis New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2006
    Сообщения:
    14
    Может в виндовсе есть стандартный класс табличного контрола? какой-нибудь аналог TStringGrid в Delphi. Если нет - прошу помощи в написании такого. В частности интересует выделение места после "window instance" (WNDCLASS.cbWndExtra) и как его потом использовать.
     
  6. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    je0n
    есть уже книжечки и посвежее :)
     
  7. kDenis

    kDenis New Member

    Публикаций:
    0
    Регистрация:
    25 сен 2006
    Сообщения:
    14
    Перенес свой вопрос в отдельную тему: http://www.wasm.ru/forum/viewtopic.php?pid=210203#p210203 - ответы пожалуйста туда.