![]() |
|
|
![]()
|
|
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
Господа ассемблершики!
как вам вот такой вариант? (если ктото еще не видел) занятный компилятор мессаджбокс с хеловордом как и положено (с учетом что секция data есть) 2560 байт кароче асм с неким сишным синтаксисом //Tooltip Controll program aTooltip; #include("w.hhf") readonly ToolTipsClassName : string := "Tooltips_class32"; MainDialogText1 : string := "This is the upper left area of the dialog"; MainDialogText2 : string := "This is the upper right area of the dialog"; MainDialogText3 : string := "This is the lower left area of the dialog"; MainDialogText4 : string := "This is the lower right area of the dialog"; static hInstance : dword; hwndTool : dword; const IDD_MAINDLG := 101; procedure EnumChild( hwndChild:dword;lParam:dword);@stdcall; static buffer : byte[256]; begin EnumChild; push(edi); mov(lParam, edi); mov( hwndChild,(type w.TOOLINFO [edi]).uId); or(w.TTF_IDISHWND, (type w.TOOLINFO [edi]).uFlags); w.GetWindowText(hwndChild, &buffer,255); mov(&buffer, (type w.TOOLINFO [edi]).lpszText); w.SendMessage(hwndTool,w.TTM_ADDTOOL,NULL,edi); pop(edi); end EnumChild; procedure SetDlgToolArea(hDlg:DWORD;lpti:DWORD;lpText:DWORD;id:DWORD;lprect:DWORD); begin SetDlgToolArea; mov(lpti, edi); mov( lprect, esi); if(id = 0) then mov( 0, (type w.TOOLINFO [edi])._rect.left ); mov(0, (type w.TOOLINFO [edi])._rect.top); mov( (type w.RECT [esi]).right, eax); sub( (type w.RECT [esi]).left, eax); shr( 1,eax); mov(eax, (type w.TOOLINFO [edi])._rect.right); mov( (type w.RECT [esi]).bottom, eax); sub( (type w.RECT [esi]).top, eax); shr( 1, eax); mov( eax, (type w.TOOLINFO [edi])._rect.bottom); elseif(id = 1) then mov( (type w.RECT [esi]).right,eax); sub( (type w.RECT [esi]).left,eax); shr( 1,eax); inc( eax); mov( eax, (type w.TOOLINFO [edi])._rect.left); mov( 0, (type w.TOOLINFO [edi])._rect.top); mov( (type w.RECT [esi]).right,eax); sub( (type w.RECT [esi]).left,eax); mov( eax,(type w.TOOLINFO [edi])._rect.right); mov( (type w.RECT [esi]).bottom,eax); sub( (type w.RECT [esi]).top,eax); mov( eax,(type w.TOOLINFO [edi])._rect.bottom); elseif(id = 2) then mov( 0,(type w.TOOLINFO [edi])._rect.left); mov( (type w.RECT [esi]).bottom,eax); sub( (type w.RECT [esi]).top,eax); shr( 1,eax); inc( eax); mov( eax,(type w.TOOLINFO [edi])._rect.top); mov( (type w.RECT [esi]).right,eax); sub( (type w.RECT [esi]).left,eax); shr( 1,eax); mov( eax, (type w.TOOLINFO [edi])._rect.right); mov( (type w.RECT [esi]).bottom,eax); sub( (type w.RECT [esi]).top,eax); mov( eax,(type w.TOOLINFO [edi])._rect.bottom); else mov( (type w.RECT [esi]).right,eax); sub( (type w.RECT [esi]).left,eax); shr( 1,eax); inc( eax); mov( eax,(type w.TOOLINFO [edi])._rect.left); mov( (type w.RECT [esi]).bottom,eax); sub((type w.RECT [esi]).top,eax); shr( 1,eax); inc( eax); mov( eax, (type w.TOOLINFO [edi])._rect.top); mov( (type w.RECT [esi]).right,eax); sub( (type w.RECT [esi]).left,eax); mov( eax, (type w.TOOLINFO [edi])._rect.right); mov( (type w.RECT [esi]).bottom,eax); sub( (type w.RECT [esi]).top,eax); mov(eax,(type w.TOOLINFO [edi])._rect.bottom); endif; mov( lpText,(type w.TOOLINFO [edi]).lpszText); w.SendMessage(hwndTool,w.TTM_ADDTOOL,NULL,lpti); end SetDlgToolArea; procedure DlgProc(hDlg:dword; uMsg:uns32; wParam:dword; lParam:dword);@nodisplay;@stdcall; static ti : w.TOOLINFO; id : dword; rect : w.RECT; begin DlgProc; if(uMsg = w.WM_INITDIALOG) then w.InitCommonControls(); w.CreateWindowEx(NULL, ToolTipsClassName,NULL, w.TTS_ALWAYSTIP,w.CW_USEDEFAULT, w.CW_USEDEFAULT,w.CW_USEDEFAULT,w.CW_USEDEFAULT,NULL,NULL, hInstance,NULL); mov(eax, hwndTool); mov( 0, id ); mov(@size( w.TOOLINFO),ti.cbSize); mov(w.TTF_SUBCLASS, ti.uFlags); mov(hDlg,ti.hWnd); w.GetWindowRect(hDlg, &rect); SetDlgToolArea(hDlg, &ti, MainDialogText1,id, &rect); inc(id); SetDlgToolArea(hDlg,&ti, MainDialogText2,id, &rect); inc( id); SetDlgToolArea(hDlg, &ti, MainDialogText3,id, & rect); inc(id); SetDlgToolArea(hDlg, &ti, MainDialogText4,id, &rect); w.EnumChildWindows(hDlg, &EnumChild, &ti); elseif(uMsg = w.WM_CLOSE) then w.EndDialog(hDlg,NULL); else mov(false,eax); exit DlgProc; endif; mov(true,eax); end DlgProc; begin aTooltip; w.GetModuleHandle(NULL); mov(eax,hInstance); w.DialogBoxParam( hInstance, val IDD_MAINDLG , NULL, &DlgProc, NULL ); w.ExitProcess(eax); end aTooltip; -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 1 Всего: 36 |
Хотелось бы поинтересоваться, где ты взял такой компилятор?
З.Ы. Кстати, у меня почему-то скрытые ассоциации с Pascal.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
это батенька по научному зовется HLA
High Level Assembler берется тут http://webster.cs.ucr.edu/Page_hla/0_hla_dnld.html к нему только еще масм32 нужен -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Custodian |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.12.2003 Где: г. Киров Репутация: нет Всего: нет |
Да там не только с Pascal'ем ассоциации, да ещё и с Visual Basic'ом. Там условая хорошо поставлены...
А от С я только директивы предпроцессора узрел там.... |
|||
|
||||
| Gloomy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 7.10.2003 Где: England Репутация: нет Всего: 1 |
oleg1973
Что-то больно уж синтаксис заморочистый - даже MASM32, ИМХО, попроще и понагляднее будет |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |