Здрасте, опять я. Оформление диалогового окна в ресурс файле: ------------------------ 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 справке у меня такого нет((((
не подобное описание у меня есть в прилагаемом файле Resource.h, ппц, а на более понятной основе faq можно где достать? а то все переберать, пока найдешь понравившийся уснуть можно( где хранятся все эти числа, на которые сделанно столько констант? Это же я так понял что-то вроде системых настроек винды.в плане формирование диалоговых окон.
rubic_ может сделали эту возможность как раз в расчёте на визуальные редакторы форм и уменьшение програмного кода?!
в ресурсе.h DS_3DLOOK 0х0004L стоит, почему? хз, программного кода они на оборот добавляют. а визуальные редакторы возможно, я посмотрел борландовский масм, там именно такая постановка в начале.
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 3000 IDC_BUTTON equ 3001 IDC_EXIT equ 3002 IDM_GETTEXT equ 32000 IDM_CLEAR equ 32001 IDM_EXIT equ 32002 .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 dialog.rc (part 2) #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 не могу понять как здесь в коде определяется Меню Code (Text): 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 Диалог понятно, а эти то не вяжутся. или при линковки rc файла по структуре определяется что и зачем? ну тогда почему в способе регистрации класса приходилось на них свой хендл выделять? и кусок с определением контролов вообще не понятен( в REsource Compiler(приложенный как хелп по rc.exe) данный способ определения назван Menu Statement, но про него ничего почти не сказанно, и примера нет(