Не получается вывод диалогового окна...

Тема в разделе "WASM.BEGINNERS", создана пользователем Алексей, 28 ноя 2006.

  1. Алексей

    Алексей New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2006
    Сообщения:
    57
    Весь день сегодня пытался написать простейшую программу использующую диалоговое окно как основное... ничего не получилось, окно упорно не хочет появлятся, делал в RadASMe
    с использованием его редактора ресурсов, вроде все как у Icseliona, а не работает, подскажите что ни так и как это запустить?

    Код (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.  
    14. .data
    15.  
    16. DlgName db "IDD_DLG1",0
    17. DlgExit db "Выход!",0
    18.  
    19. .data?
    20.  
    21. hInstance HINSTANCE ?
    22. CommandLine LPSTR ?
    23. buffer db 512 dup(?)
    24.  
    25. .const
    26.  
    27. IDD_DLG1 equ 1000
    28. IDC_STC1 equ 1001
    29. IDC_STC2 equ 1002
    30. IDC_EDT1 equ 1003
    31. IDC_EDT2 equ 1004
    32. IDC_STC3 equ 1005
    33. IDC_EDT3 equ 1006
    34. IDC_STC4 equ 1007
    35. IDC_EDT4 equ 1008
    36.  
    37. IDM_GETTEXT  equ 32000
    38. IDM_CLEAR    equ 32001
    39. IDM_EXIT     equ 32002
    40.  
    41.  
    42. .code
    43.  
    44. start:
    45.  
    46.     invoke GetModuleHandle, NULL
    47.     mov    hInstance,eax
    48.     invoke DialogBoxParam, hInstance, addr DlgName,NULL,addr DlgProc,NULL
    49.     invoke MessageBox, NULL, addr DlgExit, addr DlgExit, MB_OK
    50.     invoke ExitProcess,eax
    51.  
    52. DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    53.     invoke MessageBox, NULL, addr DlgName, addr DlgName, MB_OK
    54.     .IF uMsg==WM_INITDIALOG
    55.     invoke MessageBox, NULL, addr DlgName, addr DlgName, MB_OK
    56.     .ENDIF
    57.  
    58.     mov eax,TRUE
    59.     ret
    60. DlgProc endp
    61.    
    62. end start
    63.  
    64.  
    65.  
    66. //////////////////////////////////////////////////////////////////////////////////////
    67.  
    68.  
    69. #define IDD_DLG1 1000
    70. #define IDC_STC1 1001
    71. #define IDC_STC2 1002
    72. #define IDC_EDT1 1003
    73. #define IDC_EDT2 1004
    74. #define IDC_STC3 1005
    75. #define IDC_EDT3 1006
    76. #define IDC_STC4 1007
    77. #define IDC_EDT4 1008
    78. IDD_DLG1 DIALOGEX 6,6,243,176
    79. CAPTION "Стенд контроля"
    80. FONT 8,"MS Sans Serif",400,0
    81. STYLE 0x10CF0000
    82. EXSTYLE 0x00000000
    83. BEGIN
    84.   CONTROL "заданное значение кода угда",IDC_STC1,"Static",0x50000000,10,11,104,9,0x00000000
    85.   CONTROL "полученное значение кода угда",IDC_STC2,"Static",0x50000000,8,46,110,9,0x00000000
    86.   CONTROL "",IDC_EDT1,"Edit",0x50010000,8,22,178,13,0x00000200
    87.   CONTROL "",IDC_EDT2,"Edit",0x50010000,8,57,178,13,0x00000200
    88.   CONTROL "ошибка",IDC_STC3,"Static",0x50000000,8,81,30,9,0x00000000
    89.   CONTROL "",IDC_EDT3,"Edit",0x50010000,8,90,176,13,0x00000200
    90.   CONTROL "состояние стенда",IDC_STC4,"Static",0x50000000,8,114,64,13,0x00000000
    91.   CONTROL "",IDC_EDT4,"Edit",0x50010000,8,125,112,37,0x00000200
    92. END
    Да, еще, пошарился в RadASMe, там в меню Проект есть пункты Ресурсы и Таблица строк,
    помнится в С++ я как то писал и там похожую табичку использовал, а здесь она зачем?
    вопрос дибильный, но вдруг это ключ ко всему? :)
     
  2. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    invoke InitCommonControls
    invoke DialogBoxParam, hInstance, IDD_DLG1,NULL,addr DlgProc,NULL

    в принципе все
     
  3. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Меняю никчемную здесь InitCommonControls на вменяемую DlgProc
     
  4. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Если в процедуре диалога сообщение не обрабатывается надо вернуть FALSE. В твоём случае не производится никаких действий по умолчанию, например показывание диалога и установление фокуса и т.п.
    Код (Text):
    1. DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    2.     invoke MessageBox, NULL, addr DlgName, addr DlgName, MB_OK
    3.     .IF uMsg==WM_INITDIALOG
    4.     invoke MessageBox, NULL, addr DlgName, addr DlgName, MB_OK
    5.     jmp ret_true
    6.     .ENDIF
    7.  
    8.     mov eax,FALSE
    9.     ret    
    10.  
    11.     ret_true:
    12.     mov eax,TRUE
    13.     ret    
    14. DlgProc endp
     
  5. Алексей

    Алексей New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2006
    Сообщения:
    57
    Попробовал и первое и второе и третье, в первых двух случаях пишет ошибки, в третьем
    окно не выводится... подскажите что за функции такие: invoke InitCommonControls и
    invoke DlgProc? и с какими аргументами их вызывать?
    Э...извеняюсь, был не внимателен, мало мальски заработало, теперь окно отображается, вернее
    прямоугольник в котором оно должно быть и прога виснет, но с этим я разберусь,
    так вот, что же такое invoke InitCommonControls и invoke DlgProc? и с какими параметрами
    их передавать, сам RadASM ничего о параметрах не знает, а компилятор выдает ошибки, так
    что запускал без них...???
     
  6. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    Запусти RadAsm, выбери "новый проект", выбери МАСМ (в сомбобохе), отметь рдиобуттон Win32 App, затем DlgAsMain.tpl (в листбохе), и сравни.
    З.Ы.
    Если нет масм в сомбобохе поменяй
    строки

    [Assembler]
    Assembler=html

    на строки

    [Assembler]
    Assembler=masm,fasm,tasm,nasm,hla,GoAsm,html
     
  7. Алексей

    Алексей New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2006
    Сообщения:
    57
    Запустил, сравнил, это же совсем другой принцип построения, по Icselionу, во всяком случае... :)
     
  8. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Алексей
    >подскажите что за функции такие: invoke InitCommonControls и
    >invoke DlgProc? и с какими аргументами их вызывать?

    Да не invoke DlgProc, а ваша же DlgProc, посмотрите же свой код. Говорите - читали Iczelion-а, так перечитайте еще раз. Хотя ведь AsmGuru62 уже все это вам показал...
     
  9. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    Да то же самое, кроме мелочей, может быть.
     
  10. Алексей

    Алексей New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2006
    Сообщения:
    57
    Почитаю еще раз...


    Ура! kero, ты прав! Все получилось, что то у меня совсем ум за разум заезжать стал...
    Всем БОЛЬШОЕ пасибо!