ППц достали меня эти диалоги, гляньте почему не работает. все собирается, на ехе кликаешь ни чего не происходит, даже процесс не создается, диалог не прорисовывается(( в чем косяк Code (Text): .386 .model flat,stdcall option casemap:none DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data DlgName db "MyDialog",0 AppName db "Our Second Dialog Box",0 TestString db "Wow! I'm in an edit box now",0 .data? hInstance HINSTANCE ? CommandLine LPSTR ? buffer db 512 dup(?) .const IDC_EDIT equ 1000 IDC_BUTTON equ 1001 IDC_EXIT equ 1002 IDM_GETTEXT equ 1 IDM_CLEAR equ 2 IDM_EXIT equ 3 .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL invoke ExitProcess,eax DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_INITDIALOG invoke GetDlgItem, hWnd,IDC_EDIT invoke SetFocus,eax .ELSEIF uMsg==WM_CLOSE invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0 .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF lParam==0 .IF ax==IDM_GETTEXT invoke GetDlgItemText,hWnd,IDC_EDIT,ADDR buffer,512 invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK .ELSEIF ax==IDM_CLEAR invoke SetDlgItemText,hWnd,IDC_EDIT,NULL .ELSEIF ax==IDM_EXIT invoke EndDialog, hWnd,NULL .ENDIF .ELSE mov edx,wParam shr edx,16 .if dx==BN_CLICKED .IF ax==IDC_BUTTON invoke SetDlgItemText,hWnd,IDC_EDIT,ADDR TestString .ELSEIF ax==IDC_EXIT invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0 .ENDIF .ENDIF .ENDIF .ELSE mov eax,FALSE ret .ENDIF mov eax,TRUE ret DlgProc endp end start Code (Text): #include "RESOURCE.h" //control's #define IDC_EDIT 1000 #define IDC_BUTTON 1001 #define IDC_EXIT 1002 #define IDR_MENU_ 1003 //menu #define IDM_GETTEXT 1 #define IDM_CLEAR 2 #define IDM_EXIT 3 MyDialog DIALOG 20, 20, 150, 100 STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK CAPTION "MyWork" MENU IDR_MENU_ { DEFPUSHBUTTON "Say hello.", IDC_BUTTON, 150, 10, 30, 30 PUSHBUTTON "EXIT", IDC_EXIT, 150, 40, 30, 30 EDITTEXT IDC_EDIT, 15,17,111,13, ES_AUTOHSCROLL | ES_LEFT } IDR_MENU MENU { POPUP "Files" { MENUITEM "Get text", IDM_GETTEXT MENUITEM "Clear text",IDM_CLEAR MENUITEM "EXIT",IDM_EXIT } }
rubic_ пример для сравнения Code (Text): IDD_DIALOG1 equ 101 ... invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL а ты туда что засунул... смотри примеры какие нибудь
все ок по примерам Iczelion'a, унего такой способ, все ок так работает, просто с именами менюшек напортачил. так что проблема решена.
rubic_ Какие ж там имена меню расходились? Ты там тело диалога в меню запихнул получше сравни мой и свой варианты
rubic_ И кстати кнопоки не показываются из-за того что ты их замапил за пределами диалога, но я это не подправлял
так давай покумекаем) твой код Code (Text): #include "RESOURCE.h" //control's #define IDC_EDIT 1000 #define IDC_BUTTON 1001 #define IDC_EXIT 1002 #define IDR_MENU_ 1003 //menu #define IDM_GETTEXT 1 #define IDM_CLEAR 2 #define IDM_EXIT 3 #define MyDialog 101 MyDialog DIALOG 20, 20, 150, 100 STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK CAPTION "MyWork" BEGIN DEFPUSHBUTTON "Say hello.", IDC_BUTTON, 150, 10, 30, 30 PUSHBUTTON "EXIT", IDC_EXIT, 150, 40, 30, 30 EDITTEXT IDC_EDIT, 15,17,111,13, ES_AUTOHSCROLL | ES_LEFT END IDR_MENU MENU { POPUP "Files" { MENUITEM "Get text", IDM_GETTEXT MENUITEM "Clear text",IDM_CLEAR MENUITEM "EXIT",IDM_EXIT } } мой(по примеру Iczelion'a) Code (Text): #include "RESOURCE.h" #define IDC_EDIT 1000 #define IDC_BUTTON 1001 #define IDC_EXIT 1002 #define IDR_MENU1 1003 #define IDM_GETTEXT 0 #define IDM_CLEAR 1 #define IDM_EXIT 2 MyDialog DIALOG 20, 20, 200, 200 STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK CAPTION "MyWork" MENU IDR_MENU1 { DEFPUSHBUTTON "Say hello.", IDC_BUTTON, 150, 10, 30, 30 PUSHBUTTON "EXIT", IDC_EXIT, 150, 40, 30, 30 EDITTEXT IDC_EDIT, 15,17,111,13, ES_AUTOHSCROLL | ES_LEFT } IDR_MENU1 MENU { POPUP "Files" { MENUITEM "Get text", IDM_GETTEXT MENUITEM "Clear text",IDM_CLEAR MENUITEM "EXIT",IDM_EXIT } } сам Iczelion Code (Text): #include "resource.h" #define IDC_EDIT 3000 #define IDC_BUTTON 3001 #define IDC_EXIT 3002 #define IDR_MENU1 3003 #define IDM_GETTEXT 32000 #define IDM_CLEAR 32001 #define IDM_EXIT 32003 MyDialog DIALOG 10, 10, 205, 60 STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK CAPTION "Our Second Dialog Box" MENU IDR_MENU1 BEGIN EDITTEXT IDC_EDIT, 15,17,111,13, ES_AUTOHSCROLL | ES_LEFT DEFPUSHBUTTON "Say Hello", IDC_BUTTON, 141,10,52,13 PUSHBUTTON "E&xit", IDC_EXIT, 141,26,52,13 END IDR_MENU1 MENU BEGIN POPUP "Test Controls" BEGIN MENUITEM "Get Text", IDM_GETTEXT MENUITEM "Clear Text", IDM_CLEAR MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/ MENUITEM "E&xit", IDM_EXIT END END где я тут запишнул в тело диалога меню?ты убрал MENU IDR_MENU1 и ввел #define MyDialog 101, только зачем?
MENU IDR_MENU1 и IDR_MENU1 MENU разные штуки, одня Resource другая Statement(про нее понял только, что воде используется для объявления контролов на диалоге)
Да правда если меню пишется перед названием то получается это статемент(часть диалога). Я ресурсы делаю в визуальных редакторах и с текстом толком не работал и вот нарвался.Вообще меню в диалоге сам очень редко делал и в WM_INITDIALOG по хендлу с SetMenu(...).И тебе советую в визуальных редакторах такие вещи делать там толком не накосячиш. вообще-то совет не был сформулирован на такую реакцию
в VS(ВизуалСтудии) и RadAsm radasm.com Вообще сам все асмовские дела в RadAsm - это лучшая и полноценная IDE для асма
у мене она есть(RadAsm), только я что-то не понимаю как там делать визуально ресурсы стряпать, я в ней листинги кода пишу вообще я недавно начал программировать, где-то с месяц-полтора назад, понял что это мое. начал с С++(доучил на уровне Страуструпа), сам язык понравился, но уж больно процесс программирования был не понятен. Там что-то берется туда пересылается, классы, структуры, а хотелось понимать досканально процесс работы, а где этому можно научиться лучше чем не в асме, поэтому пересел на асм, но дал себе слово вернуться когда-нить к С(С++). С++ и асм можно очень эффективно вместе использовать я думаю.
Проект->Добавить новый->... или Проект->Добавить cуществующие->... А С(С++)+asm классическая проверенная и востребованная связка
Проект->Добавить новый->... или Проект->Добавить cуществующие->... есть руссифицированная версия? ппц как же я просмотрел у меня в новом проекте только HTML висит --- ща порыл на сайте, который ты указал, нашел зип архив со всеми видами асма, добавил к HTML прибавился масм)
rubic_ Там же надо дополнительный асм модуль к ней скачивать... И русификация также там скачивается. А может ты его и скачал, но только в IDE толком не подключил Настройки->ProgrammingLanguages кнопочка с 3 точками
скачал руссификатор, просто теперь буду радоваться жизни, когда разберусь правда, может ты еще и тутариалы по нему на русском знаешь?