диалоговые окна

Discussion in 'WASM.BEGINNERS' started by rubic_, Oct 14, 2007.

  1. rubic_

    rubic_ Женя

    Blog Posts:
    0
    Joined:
    Jul 9, 2007
    Messages:
    121
    Location:
    Омск
    Здрасте, опять я.
    Оформление диалогового окна в ресурс файле:
    ------------------------
    STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX |
    WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK
    ------------------------
    Вопрос что здесь обозначает число 0x0004, у Iczelion'a это не описанно, в хедпе Resoure Compiler, который есть в масме, тоже ничего нет по этому поводу.
    Что уважаемый Iczelion хотел этим сказать?
    И что-то не пойму, зачем использовать обычные окна с регистрацией класса? Если можно все на диалогах шпилить, ну накрайняк диалог через регистрацию. Iczelion вроде не плохие + приводит в пользу этого метода. Может я чего не понимаю, может у обычных окон тоже есть свои заморочки. twgw прокоментируй плз)

    нашел в файле RESOURCE.h такую строку #define NFS_LISTCOMBO 0x0004, в рубрике стили определения-это оно? и где можно посмотреть описание всех этих констант, в WinApi справке у меня такого нет((((
     
  2. 10110111

    10110111 New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2006
    Messages:
    319
    Location:
    Санкт-Петербург
    скорее всего, да.
     
  3. rubic_

    rubic_ Женя

    Blog Posts:
    0
    Joined:
    Jul 9, 2007
    Messages:
    121
    Location:
    Омск
    не подобное описание у меня есть в прилагаемом файле Resource.h, ппц, а на более понятной основе faq можно где достать? а то все переберать, пока найдешь понравившийся уснуть можно(
    где хранятся все эти числа, на которые сделанно столько констант? Это же я так понял что-то вроде системых настроек винды.в плане формирование диалоговых окон.
     
  4. twgt

    twgt New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    Вообще-то, это DS_3DLOOK, но т.к. далее стоит тоже DS_3DLOOK, они гасят друг друга.
     
  5. twgt

    twgt New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    rubic_
    может сделали эту возможность как раз в расчёте на визуальные редакторы форм и уменьшение програмного кода?!
     
  6. rubic_

    rubic_ Женя

    Blog Posts:
    0
    Joined:
    Jul 9, 2007
    Messages:
    121
    Location:
    Омск
    в ресурсе.h DS_3DLOOK 0х0004L стоит, почему?

    хз, программного кода они на оборот добавляют. а визуальные редакторы возможно, я посмотрел борландовский масм, там именно такая постановка в начале.
     
  7. rubic_

    rubic_ Женя

    Blog Posts:
    0
    Joined:
    Jul 9, 2007
    Messages:
    121
    Location:
    Омск
    Code (Text):
    1.    .386
    2.    .model flat,stdcall
    3.    option casemap:none
    4.  
    5.    DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
    6.  
    7.    include \masm32\include\windows.inc
    8.    include \masm32\include\user32.inc
    9.    include \masm32\include\kernel32.inc
    10.    includelib \masm32\lib\user32.lib
    11.    includelib \masm32\lib\kernel32.lib
    12.  
    13.    .data
    14.  
    15.    DlgName db "MyDialog",0
    16.    AppName db "Our Second Dialog Box",0
    17.    TestString db "Wow! I'm in an edit box now",0
    18.  
    19.    .data?
    20.  
    21.    hInstance HINSTANCE ?
    22.    CommandLine LPSTR ?
    23.    buffer db 512 dup(?)
    24.  
    25.    .const
    26.  
    27.    IDC_EDIT            equ 3000
    28.    IDC_BUTTON     equ 3001
    29.    IDC_EXIT            equ 3002
    30.    IDM_GETTEXT  equ 32000
    31.    IDM_CLEAR       equ 32001
    32.    IDM_EXIT           equ 32002
    33.  
    34.    .code
    35.  
    36.    start:
    37.  
    38.        invoke GetModuleHandle, NULL
    39.        mov    hInstance,eax
    40.        invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
    41.        invoke ExitProcess,eax
    42.  
    43.    DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    44.        .IF uMsg==WM_INITDIALOG
    45.            invoke GetDlgItem, hWnd,IDC_EDIT
    46.            invoke SetFocus,eax
    47.        .ELSEIF uMsg==WM_CLOSE
    48.            invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
    49.        .ELSEIF uMsg==WM_COMMAND
    50.            mov eax,wParam
    51.            .IF lParam==0
    52.                .IF ax==IDM_GETTEXT
    53.                    invoke GetDlgItemText,hWnd,IDC_EDIT,ADDR buffer,512
    54.                    invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK
    55.                .ELSEIF ax==IDM_CLEAR
    56.                    invoke SetDlgItemText,hWnd,IDC_EDIT,NULL
    57.                .ELSEIF ax==IDM_EXIT
    58.                    invoke EndDialog, hWnd,NULL
    59.                .ENDIF
    60.            .ELSE
    61.                mov edx,wParam
    62.                shr edx,16
    63.                .if dx==BN_CLICKED
    64.                    .IF ax==IDC_BUTTON
    65.                        invoke SetDlgItemText,hWnd,IDC_EDIT,ADDR TestString
    66.                    .ELSEIF ax==IDC_EXIT
    67.                        invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
    68.                    .ENDIF
    69.                .ENDIF
    70.            .ENDIF
    71.        .ELSE
    72.            mov eax,FALSE
    73.            ret
    74.        .ENDIF
    75.        mov eax,TRUE
    76.  
    77.        ret
    78.  
    79.    DlgProc endp
    80.  
    81.    end start
    82.  
    83.                                 dialog.rc (part 2)
    84.  
    85.    #include "resource.h"
    86.  
    87.    #define IDC_EDIT                                       3000
    88.    #define IDC_BUTTON                                3001
    89.    #define IDC_EXIT                                       3002
    90.    #define IDR_MENU1                                  3003
    91.    #define IDM_GETTEXT                              32000
    92.    #define IDM_CLEAR                                   32001
    93.    #define IDM_EXIT                                       32003
    94.    MyDialog DIALOG 10, 10, 205, 60
    95.    STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX |
    96.    WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK
    97.    CAPTION "Our Second Dialog Box"
    98.  
    99.    MENU IDR_MENU1
    100.    BEGIN
    101.        EDITTEXT         IDC_EDIT,   15,17,111,13, ES_AUTOHSCROLL | ES_LEFT
    102.        DEFPUSHBUTTON   "Say Hello", IDC_BUTTON,    141,10,52,13
    103.        PUSHBUTTON      "E&xit", IDC_EXIT,  141,26,52,13
    104.    END
    105.  
    106.    IDR_MENU1  MENU
    107.    BEGIN
    108.        POPUP "Test Controls"
    109.        BEGIN
    110.            MENUITEM "Get Text", IDM_GETTEXT
    111.            MENUITEM "Clear Text", IDM_CLEAR
    112.            MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/
    113.            MENUITEM "E&xit", IDM_EXIT
    114.        END
    115.    END
    не могу понять как здесь в коде определяется Меню
    Code (Text):
    1. MENU IDR_MENU1
    2.    BEGIN
    3.        EDITTEXT         IDC_EDIT,   15,17,111,13, ES_AUTOHSCROLL | ES_LEFT
    4.        DEFPUSHBUTTON   "Say Hello", IDC_BUTTON,    141,10,52,13
    5.        PUSHBUTTON      "E&xit", IDC_EXIT,  141,26,52,13
    6.    END
    7.  
    8.    IDR_MENU1  MENU
    9.    BEGIN
    10.        POPUP "Test Controls"
    11.        BEGIN
    12.            MENUITEM "Get Text", IDM_GETTEXT
    13.            MENUITEM "Clear Text", IDM_CLEAR
    14.            MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/
    15.            MENUITEM "E&xit", IDM_EXIT
    16.        END
    17.    END
    Диалог понятно, а эти то не вяжутся. или при линковки rc файла по структуре определяется что и зачем? ну тогда почему в способе регистрации класса приходилось на них свой хендл выделять?
    и кусок с определением контролов вообще не понятен( в REsource Compiler(приложенный как хелп по rc.exe) данный способ определения назван Menu Statement, но про него ничего почти не сказанно, и примера нет(
     
  8. rubic_

    rubic_ Женя

    Blog Posts:
    0
    Joined:
    Jul 9, 2007
    Messages:
    121
    Location:
    Омск
    что прям никто не знает?(