Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 16:54   #1
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию Ассемблер - объекты на форме...

Создал окно на ассемблере, (http://www.xserver.ru/computer/langprogr/assembler/14/). Даже текстовое поле label, а как теперь создать на окне(форме) такие объекты как Edit, Button, Memo ?
heart вне форума Ответить с цитированием
Старый 20.03.2009, 17:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не долго думая запускаю MASM Builder
Кидаю на форму указанные контролы и получаю такое:

Код:
	.386
	.model flat,stdcall
	option casemap:none
	include d:\masm32\include\windows.inc
	include d:\masm32\include\user32.inc
	include d:\masm32\include\kernel32.inc
	include d:\masm32\include\gdi32.inc
	include d:\masm32\include\comdlg32.inc
	include d:\masm32\include\shell32.inc
	include d:\masm32\include\masm32.inc
  includelib d:\masm32\lib\user32.lib
	includelib d:\masm32\lib\kernel32.lib
	includelib d:\masm32\lib\gdi32.lib
	includelib d:\masm32\lib\comdlg32.lib
	includelib d:\masm32\lib\shell32.lib
	includelib d:\masm32\lib\masm32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
RGB macro red,green,blue
	xor		eax,eax
	mov		ah,blue
	shl		eax,8
	mov		ah,green
	mov		al,red
endm
szText MACRO Name,Text:VARARG
	LOCAL	lbl
	jmp		lbl
	Name	db Text,0
	lbl:
ENDM
.const
memo1ID			equ 2
edit1ID			equ 3
button1ID		equ 1
.data?
hFontN			HWND ?
hwndmemo1		HWND ?
hwndedit1		HWND ?
hwndbutton1		HWND ?
hInstance		HINSTANCE ?
CommandLine		LPSTR ?
.data
FontName		db "MS Sans Serif",0
lf				LOGFONT <>
Textmemo1		db "Memo1",0
Textedit1		db "Edit1",0
Textbutton1		db "Button1",0
;_______________
ClassName		db "MASM Builder",0
BtnClName		db "button",0
StatClName		db "static",0
EditClName		db "edit",0
LboxClName		db "listbox",0
CboxClName		db "combobox",0
ReditClName		db "richedit",0
RichEditLib		db "riched32.dll",0
Caption			db "Form",0
;_______________
.code
start:
	invoke	GetModuleHandle,NULL
	mov		hInstance,eax
	invoke	GetCommandLine
	invoke	WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
	invoke	ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc	:WNDCLASSEX
LOCAL msg 	:MSG
LOCAL hwnd	:HWND
	mov		wc.cbSize,SIZEOF WNDCLASSEX
	mov		wc.style,CS_BYTEALIGNCLIENT
	mov		wc.lpfnWndProc,offset WndProc
	mov		wc.cbClsExtra,NULL
	mov		wc.cbWndExtra,NULL
	push	hInst
	pop		wc.hInstance
	mov		wc.hbrBackground,COLOR_BTNFACE+1
	mov		wc.lpszClassName,OFFSET ClassName
	invoke	LoadIcon,NULL,IDI_APPLICATION
	mov		wc.hIcon,eax
	mov		wc.hIconSm,eax
	invoke	LoadCursor,NULL,IDC_ARROW
	mov		wc.hCursor,eax
	invoke	RegisterClassEx,addr wc
invoke CreateWindowEx,0,ADDR ClassName,ADDR Caption,WS_SYSMENU or WS_MINIMIZEBOX,350,80,315,200,0,0,hInst,0
	mov		hwnd,eax
	INVOKE	ShowWindow,hwnd,SW_SHOWNORMAL
	INVOKE	UpdateWindow,hwnd
	.WHILE TRUE
		invoke	GetMessage,ADDR msg,0,0,0
		.BREAK .IF (!eax)
		invoke	TranslateMessage,ADDR msg
		invoke	DispatchMessage,ADDR msg
	.ENDW
 	mov	eax,msg.wParam
	ret
WinMain endp
WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
	.IF uMsg == WM_DESTROY
		invoke	PostQuitMessage,NULL
	.ELSEIF uMsg == WM_CREATE
		invoke	lstrcpy,addr lf.lfFaceName,addr FontName
		mov		lf.lfHeight,-11
		mov		lf.lfWeight,500
		invoke	CreateFontIndirect,addr lf
		mov		hFontN,eax
invoke CreateWindowEx, WS_EX_CLIENTEDGE,\
 ADDR EditClName, ADDR Textmemo1,\ WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or WS_VISIBLE,200,40,185,89,hWnd,memo1ID,hInstance,0
		mov		hwndmemo1,eax
		invoke	SendMessage, hwndmemo1,WM_SETFONT,hFontN,1
invoke CreateWindowEx, WS_EX_CLIENTEDGE,\
 ADDR EditClName, ADDR Textedit1,WS_CHILD or ES_LEFT or ES_AUTOHSCROLL or WS_VISIBLE,\
72,80,121,21,hWnd,edit1ID,hInstance,0
		mov		hwndedit1,eax
		invoke	SendMessage, hwndedit1, WM_SETFONT, hFontN,1
invoke CreateWindowEx, 0 ,ADDR BtnClName,\
ADDR Textbutton1,WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,\
40,24,75,25,hWnd,button1ID,hInstance,0
		mov		hwndbutton1,eax
		invoke	SendMessage, hwndbutton1,WM_SETFONT,hFontN,1
	.ELSEIF uMsg == WM_COMMAND
		mov	eax,wParam
		.IF lParam != 0
			.IF ax == button1ID
				shr eax,16
				.IF ax == BN_CLICKED
					invoke	MessageBox,hWnd,addr Textbutton1,0,MB_ICONINFORMATION
				.ENDIF
			.ENDIF
		.ENDIF;
	.ELSE
		invoke	DefWindowProc,hWnd,uMsg,wParam,lParam
		ret
	.ENDIF
	xor		eax,eax
	ret
WndProc endp
end start
I'm learning to live...

Последний раз редактировалось rpy3uH; 20.03.2009 в 17:15.
Stilet вне форума Ответить с цитированием
Старый 20.03.2009, 17:15   #3
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
Печаль

Вот облом....
Я не знал, что есть подобные программы.. и стал писать свою, уже половину сделал....

Спасибо за помощь.
heart вне форума Ответить с цитированием
Старый 20.03.2009, 18:48   #4
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Если я не ошибаюсь, то создание объектов на форме очень хорошо описаны в туториалах ICZELION'а. Вот пример от туда:

Код:
.386
.model flat,stdcall
option casemap:none
WinMain 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
ClassName db "SimpleWinClass",0
AppName  db "Our First Window",0
MenuName db "FirstMenu",0
ButtonClassName db "button",0
ButtonText db "My First Button",0
EditClassName db "edit",0
TestString db "Wow! I'm in an edit box now",0

.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
hwndButton HWND ?
hwndEdit HWND ?
buffer db 512 dup(?)

.const
ButtonID equ 1
EditID equ 2
IDM_HELLO equ 1
IDM_CLEAR equ 2
IDM_GETTEXT equ 3
IDM_EXIT equ 4

.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke GetCommandLine
	mov CommandLine,eax
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL wc:WNDCLASSEX
	LOCAL msg:MSG
	LOCAL hwnd:HWND
	mov   wc.cbSize,SIZEOF WNDCLASSEX
	mov   wc.style, CS_HREDRAW or CS_VREDRAW
	mov   wc.lpfnWndProc, OFFSET WndProc
	mov   wc.cbClsExtra,NULL
	mov   wc.cbWndExtra,NULL
	push  hInst
	pop   wc.hInstance
	mov   wc.hbrBackground,COLOR_BTNFACE+1
	mov   wc.lpszMenuName,OFFSET MenuName
	mov   wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov   wc.hIcon,eax
	mov   wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov   wc.hCursor,eax
	invoke RegisterClassEx, addr wc
	INVOKE CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
           CW_USEDEFAULT,300,200,NULL,NULL,\
           hInst,NULL
	mov   hwnd,eax
	INVOKE ShowWindow, hwnd,SW_SHOWNORMAL
	INVOKE UpdateWindow, hwnd
	.WHILE TRUE
                INVOKE GetMessage, ADDR msg,NULL,0,0
                .BREAK .IF (!eax)
                INVOKE TranslateMessage, ADDR msg
                INVOKE DispatchMessage, ADDR msg
	.ENDW
	mov     eax,msg.wParam
	ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
	.IF uMsg==WM_DESTROY
		invoke PostQuitMessage,NULL
	.ELSEIF uMsg==WM_CREATE
		invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
                        ES_AUTOHSCROLL,\
                        50,35,200,25,hWnd,EditID,hInstance,NULL
		mov  hwndEdit,eax
		invoke SetFocus, hwndEdit
		invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR ButtonText,\
                        WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\
                        75,70,140,25,hWnd,ButtonID,hInstance,NULL
		mov  hwndButton,eax
	.ELSEIF uMsg==WM_COMMAND
		mov eax,wParam
		.IF lParam==0
			.IF ax==IDM_HELLO
				invoke SetWindowText,hwndEdit,ADDR TestString
				invoke SendMessage,hwndEdit,WM_KEYDOWN,VK_END,NULL
			.ELSEIF ax==IDM_CLEAR
				invoke SetWindowText,hwndEdit,NULL
			.ELSEIF  ax==IDM_GETTEXT
				invoke GetWindowText,hwndEdit,ADDR buffer,512
				invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK
			.ELSE
				invoke DestroyWindow,hWnd
			.ENDIF
		.ELSE
			.IF ax==ButtonID
				shr eax,16
				.IF ax==BN_CLICKED
					invoke SendMessage,hWnd,WM_COMMAND,IDM_GETTEXT,0
				.ENDIF
			.ENDIF
		.ENDIF
	.ELSE
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam
		ret
	.ENDIF
	xor    eax,eax
	ret
WndProc endp
end start
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 20.03.2009, 18:51   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Я не знал, что есть подобные программы.. и стал писать свою, уже половину сделал....
Своя всегда лучше...
У меня, например, своя программа для редактирования Html-страниц...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 20.03.2009, 22:19   #6
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от MalCer Посмотреть сообщение
Если я не ошибаюсь, то создание объектов на форме очень хорошо описаны в туториалах ICZELION'а.
Скачать можно тут:
http://www.wasm.ru/doclist.php?list=1#2
http://www.wasm.ru/baixado.php?mode=doc&id=2


Цитата:
Сообщение от DomiNick Посмотреть сообщение
Своя всегда лучше...
У меня, например, своя программа для редактирования Html-страниц...
Продолжу писать... и в правду свое лучше, точно знаешь, как работает...
heart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объекты в си Барби Помощь студентам 1 13.05.2008 01:10
3D объекты в Си g0liath Помощь студентам 2 20.04.2008 21:39
Потоки и объекты OrdJONY Общие вопросы Delphi 3 28.11.2007 21:59
Как правильно программно создавать объекты на форме Format C: Общие вопросы Delphi 16 05.07.2007 09:08
com-объекты b-code Общие вопросы Delphi 0 15.03.2007 11:17