WMmail.ru - сервис почтовых рассылок

пятница, 4 ноября 2011 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Яркие скидки на теплые платья! Все от 590 руб.
  
  
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2897
• повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2572
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2116
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1486
Дата выхода:05.11.2011, 06:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:192 / 60
Вопросов / ответов:1 / 1

Консультация # 184349: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Разработать программу (MASM 32), на форму поставить кнопки, по нажатию одной на экран выведется новое окно с заданной в файле текстовой информацией, по нажатию второй ─ выведется окно с графической информацией. Новое окно ─ не типа MessageBox, а стандартная форма. При этом файл...


Консультация # 184349:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Разработать программу (MASM 32), на форму поставить кнопки, по нажатию одной на экран выведется новое окно с заданной в файле текстовой информацией, по нажатию второй ─ выведется окно с графической информацией. Новое окно ─ не типа MessageBox, а стандартная форма. При этом файлы с исходной информацией получать в результате диалога.

И еще можно комментариев побольше в проге)))

Дата отправки: 31.10.2011, 06:15
Вопрос задал: Петров Юрий Иванович (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Петров Юрий Иванович!
Программировать под Windows несколько сложнее, чем под ДОС.
Без основательного ознакомления с принципами программирования понять очень сложно.
Настоятельно рекомендую это сделать в первую очередь.
По программе:
Для запроса имени файла использовал стандартный диалог.
Реализовал использование диалогов без шаблонов.
Имеем немодальные окна, обратите внимание, что очередь сообщений у них одна с основным окном!
Можно создавать много окон, ограничений нет
Разбирайтесь...

Код :
 	.386			;32-битный код 	.model flat, stdcall	;модель памяти и соглашение о вызове параметров 	option casemap :none	;различаем большие-малые буковки  ; include files include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\comdlg32.inc include \masm32\macros\macros.asm  ; libraries includelib \masm32\lib\masm32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\comdlg32.lib  ; Прототипы функций WndProc			PROTO :DWORD,:DWORD,:DWORD,:DWORD TopXY			PROTO :DWORD,:DWORD RegisterWinClass	PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD MsgLoop			PROTO :DWORD Main			PROTO PushButton	 	PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD CreatePopWindow		PROTO: DWORD,:DWORD,:DWORD GetFileName	 	PROTO :DWORD,:DWORD,:DWORD SetText			PROTO :DWORD,:DWORD TextWndProc		PROTO :DWORD,:DWORD,:DWORD,:DWORD CalcSize		PROTO :DWORD,:DWORD,:DWORD,:DWORD BmpWndProc		PROTO :DWORD,:DWORD,:DWORD,:DWORD  ;коды используемых ресурсов IDI_ICON	equ	500 IDC_TEXT	equ	201 IDC_BMP		equ	301 IDC_EXIT	equ	401 IDC_EDIT	equ	601  BitMapData	struct hBmap		dd	? hMhdc		dd	? BitMapData	ends  	.data currButton	dd	IDC_EXIT  	.data?  hInstance	dd	?		;описатель экземпляра процесса CommandLine	dd	?		;командная строка hIcon		dd	?		;описатель пиктограммы hCursor		dd	?		;описатель курсора sWid		dd	?		;ширина экрана sHgt		dd	?		;высота экрана hWnd		dd	?		;описатель главного окна приложения rectBMP		RECT	<>		;координаты для вывода BMP в окне sizeBMP		POINT	<>		;размер BMP szNameTXT	db	256 dup (?)	;для хранения текущего имени txt-файла szNameBMP	db	256 dup (?)	;для хранения текущего имени bmp-файла  	.code  ;макро rv запускает указанную функцию и присваивает переменной возвращаемый результат  start: 	mov hInstance,  rv(GetModuleHandle, NULL)	;описатель экземпляра процесса 	mov CommandLine,rv(GetCommandLine)		;командная строка 	mov hIcon,	rv(LoadIcon,hInstance,IDI_ICON)	;пиктограмма 	mov hCursor,	rv(LoadCursor,NULL,IDC_ARROW)	;курсор 	mov sWid,	rv(GetSystemMetrics,SM_CXSCREEN);ширина экрана 	mov sHgt,	rv(GetSystemMetrics,SM_CYSCREEN);высота экрана  	call	Main					;запускаем  	invoke ExitProcess, eax				;завершаем процесс  ; ------------------------------------------------------------------------- ;Макро STRING строит строку в сегменте .data Main proc  	STRING	szClassName,"MainDialog_Class"		;класс основного окна 	STRING	szTextClassName,"TextDialog_Class"	;класс диалога для вывода текста 	STRING	szBmpClassName,"BmpDialog_Class"	;класс диалога для вывода графики 	STRING	szHeader,"Задание"			;заголовок основного окна  	invoke	RegisterWinClass,ADDR WndProc,ADDR szClassName,	;регистрируем класс окна 		hIcon,hCursor,COLOR_BTNFACE+1 	invoke	RegisterWinClass,ADDR TextWndProc,	;регистрируем класс окна для вывода текста 		ADDR szTextClassName,hIcon,hCursor,COLOR_BTNFACE+1 	invoke	RegisterWinClass,ADDR BmpWndProc,	;регистрируем класс окна для вывода графики 		ADDR szBmpClassName,hIcon,hCursor,COLOR_BTNFACE+1  ;создаем основное окно 	invoke	CreateWindowEx,WS_EX_LEFT, 		ADDR szClassName, 		ADDR szHeader, 		WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX, 		0,0,0,0, 		NULL,NULL, 		hInstance,NULL 	mov	hWnd,eax				;сохраним описатель окна  	invoke	ShowWindow,hWnd, SW_SHOWNORMAL		;показать 	invoke	UpdateWindow,hWnd			;обновить  	invoke	MsgLoop,hWnd				;цикл обработки сообщений 	ret  Main endp  ;макро m2m делает push + pop ;регистрируем класс окна RegisterWinClass proc lpWndProc:DWORD, lpClassName:DWORD, 		      Icon:DWORD, Cursor:DWORD, bColor:DWORD  LOCAL	wc:WNDCLASSEX  	mov wc.cbSize, sizeof WNDCLASSEX 	mov wc.style, 0 	m2m wc.lpfnWndProc, lpWndProc 	mov wc.cbClsExtra, NULL 	mov wc.cbWndExtra, 4		;зарезервируем 4 байта для хранения информации 	m2m wc.hInstance, hInstance 	m2m wc.hbrBackground,  bColor 	mov wc.lpszMenuName, NULL 	m2m wc.lpszClassName, lpClassName 	m2m wc.hIcon, Icon 	m2m wc.hCursor,	Cursor 	m2m wc.hIconSm,	Icon  	invoke RegisterClassEx, ADDR wc 	ret  RegisterWinClass endp  ;цикл обработки сообщений MsgLoop proc uses esi edi, hwnd:DWORD  LOCAL	msg:MSG  	xor	edi, edi			; clear EDI 	lea	esi, msg			; Structure address in ESI  	.while TRUE 	  invoke	GetMessage, esi, edi, edi, edi 	  .break .if (!eax) 	  ;пропустим сообщения для дочерних окон 	  invoke	IsDialogMessage, hwnd, esi 	  .if (!eax) 	    INVOKE TranslateMessage, addr msg 	    INVOKE DispatchMessage, addr msg 	  .endif 	.endw 	mov	eax, msg.wParam 	ret  MsgLoop	endp  ;функция основного окна WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD  LOCAL 	Wwd:DWORD,	\	;ширина основного окна 	Wht:DWORD,	\	;высота основного окна 	Wtx:DWORD,	\	;X-координата начала окна 	Wty:DWORD		;Y-координата начала окна  if uMsg == WM_CREATE 	STRING sButtonText,"Текст" 	STRING sButtonBmp, "Графика" 	STRING sButtonExit,"Выход"  ;создаем три кнопки 	invoke PushButton,ADDR sButtonText,hWin,WS_TABSTOP,40,20,100,25,IDC_TEXT 	invoke PushButton,ADDR sButtonBmp,hWin,WS_TABSTOP,40,50,100,25,IDC_BMP 	invoke PushButton,ADDR sButtonExit,hWin,WS_TABSTOP or BS_DEFPUSHBUTTON,40,80,100,25,IDC_EXIT ;дадим фокус "Выход"-у 	invoke SetFocus, eax  ;посчитаем координаты окна 	mov Wwd, 180 	mov Wht, 160 	invoke TopXY,Wwd,sWid 	mov Wtx, eax 	invoke TopXY,Wht,sHgt 	mov Wty, eax ;разместим окно в центре экрана 	invoke MoveWindow, hWin, Wtx, Wty, Wwd, Wht, 0  elseif uMsg == WM_SETFOCUS ;при получении окном фокуса, дадим фокус последней использованной кнопке 	invoke	GetDlgItem, hWin, currButton 	invoke	SetFocus, eax  elseif uMsg == WM_COMMAND 	STRING	szFilterTXT,'Текстовые Файлы (*.txt)',0,'*.txt',0	;фильтр для выбора текстовых файлов 	STRING	szFilterBMP,'Графические Файлы (*.bmp)',0,'*.bmp',0	;фильтр для выбора графическых файлов 	STRING	szTitle,'Введите имя открываемого файла'		;заголовок для диалога выбора файлов  	;запомним код активной кнопки 	m2m	currButton, wParam 	;отрабатываем кнопки 	.if wParam == IDC_TEXT		;Текст 	  ;запросим имя TXT-файла 	  invoke GetFileName, addr szNameTXT, addr szFilterTXT, addr szTitle 	  ;что-то ввели? 	  .if eax != 0 	    invoke CreatePopWindow, hWin, addr szNameTXT, addr szTextClassName 	  .endif 	.elseif wParam == IDC_BMP	;Графика 	  ;запросим имя TXT-файла 	  invoke GetFileName,offset szNameBMP,offset szFilterBMP,offset szTitle 	  ;что-то ввели? 	  .if eax != 0 	    invoke CreatePopWindow, hWin, addr szNameBMP, addr szBmpClassName 	  .endif 	.elseif wParam == IDC_EXIT	;Выход 	  ;сымитируем "крестик" сверху или Ctrl-F4 	  invoke SendMessage, hWin, WM_CLOSE, 0, 0 	.endif elseif uMsg == WM_CLOSE 	;завершаемся: посылаем в очередь ноль, по которому произойдет выход из отработки 	invoke PostQuitMessage,NULL else 	;все остальное отрабатывается стандартно 	invoke DefWindowProc,hWin,uMsg,wParam,lParam 	ret				;возврат из "ненаших" отработок endif 	return 0			;возврат из "наших" отработок WndProc endp  ;вычисляем координату начала отрезка длины wDim, чтобы он был посередине отрезка длины sDim TopXY proc wDim:DWORD, sDim:DWORD 	mov eax, sDim 	sub eax, wDim 	shr eax, 1 	ret TopXY endp  ;создание дочернего окна (родитель hParent) класса pClassName  ;и с именем файла pfileName для заполнения CreatePopWindow	proc	hParent:dword, pfileName:dword, pClassName:dword local	hWindow:dword ;создаем окно 	invoke	CreateWindowEx,0, 		pClassName,				;имя класса 		pfileName,				;имя файла в заголовок 		WS_CAPTION or WS_SIZEBOX or WS_SYSMENU or \ 		WS_POPUP or DS_MODALFRAME, 		0,0,0,0, 		hParent,NULL, 		hInstance,pfileName			;передадим имя файла параметром 	mov	hWindow,eax				;сохраним описатель окна  	invoke	ShowWindow, hWindow, SW_SHOWNORMAL	;показать 	invoke	UpdateWindow, hWindow			;обновить  	return	hWindow					;вернем описатель окна CreatePopWindow	endp  ;вводим имя файла GetFileName	proc	uses edi, pFName:dword,	\	;имя текущего файла 				  pFilter:dword,\	;фильтр 				  pTitle:dword		;заголовок диалога LOCAL	ofn:OPENFILENAMEA  STRING	szCurrPath,"."					;начальный путь - текущая папка 	 	lea	edi, ofn 	mov	edx, edi 	mov	ecx, (size OPENFILENAMEA) / 4 	xor	eax, eax 	rep	stosd 	mov	[(OPENFILENAMEA ptr [edx]).lStructSize], size OPENFILENAMEA 	m2m	[(OPENFILENAMEA ptr [edx]).lpstrFile], pFName		;имя текущего файла 	mov	[(OPENFILENAMEA ptr [edx]).nMaxFile], 256		;его макс длина 	m2m	[(OPENFILENAMEA ptr [edx]).lpstrFilter], pFilter	;фильтр 	m2m	[(OPENFILENAMEA ptr [edx]).lpstrTitle], pTitle		;заголовок диалога 	mov	[(OPENFILENAMEA ptr [edx]).lpstrInitialDir], offset szCurrPath ;текущий путь 	mov	[(OPENFILENAMEA ptr [edx]).Flags], OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST or OFN_HIDEREADONLY 					 					;параметр - адрес структуры 	invoke	GetOpenFileName, edx	;вызываем 	ret				;возвращает 1, если файл выбран, или 0, если нет GetFileName	endp  ;создание кнопки на позиции (a, b), размером (wd, ht), со стилем style и с идентификатором ID PushButton proc lpText:DWORD,hParent:DWORD,style:DWORD, 		a:DWORD,b:DWORD,wd:DWORD,ht:DWORD,ID:DWORD  	STRING	btnClass,"BUTTON"  	mov	eax, style 	or	eax, WS_CHILD or WS_VISIBLE	;дочернее и видимое даем по-умолчанию  	invoke	CreateWindowEx,0, 		ADDR btnClass,lpText, eax, 		a,b,wd,ht,hParent,ID, 		hInstance,NULL 	ret					;в AX handle кнопки  PushButton endp  ;Подпрограммы для окна с текстом --------------------- ;загрузка текста в редактор окна из файла ;hwnd - описатель редактора, куда мы "отдадим" текст ;szName - имя файла SetText	proc	uses esi edi ebx, hwnd:dword, szName:dword local	dwCount:dword, dwHigh:dword	;младшее и старшее двойное слово длины файла  ;открываем файл 	mov	ebx, rv(CreateFile, szName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0) ;узнаем длину файла 	mov	dwCount, rv(GetFileSize, ebx, ADDR dwHigh) ;резервируем память под содержимое файла ;в конце добавим 1 байт для завершающего нуля 	lea	edi, dwCount 	mov	eax, [edi] 	inc	eax ;esi - адрес буфера 	mov	esi, rv(GlobalAlloc, GMEM_FIXED, eax) ;читаем файл ;edi - адрес переменной с длиной ;ebx - описатель файла 	invoke	ReadFile, ebx, esi, [edi], edi, 0 ;закрываем файл 	invoke	CloseHandle, ebx ;читаем реальную длину файла 	mov	eax, [edi] ;завершим нулем 	mov	byte ptr [eax+esi], 0 ;выведем в Edit 	invoke	SetWindowText, hwnd, esi ;освободим память 	invoke	GlobalFree, esi 	ret SetText	endp  ;функция окна "Текст" TextWndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD LOCAL 	Wwd:DWORD,	\	;ширина основного окна 	Wht:DWORD		;высота основного окна  if uMsg == WM_CREATE ;создадим дочернее окно-редактор с атрибутами многострочный, readonly, с прокруткой ;размеры и положение зададим позже 	STRING	edtClass, "edit" 	invoke	CreateWindowEx,0, ADDR edtClass,NULL, 			\ 		WS_VISIBLE or WS_CHILD or ES_MULTILINE or ES_READONLY or\ 		ES_AUTOHSCROLL or ES_AUTOVSCROLL or			\ 		WS_HSCROLL or WS_VSCROLL, 				\ 		0,0,0,0,hWin,IDC_EDIT,					\ 		hInstance,NULL 	.if (eax) 	  mov	ecx, lParam	;lParam-адрес структуры, в начале-параметр-адрес имени файла 	  invoke SetText, eax, [ecx]	;заполняем редактор 	.endif  ;посчитаем координаты окна 	mov	eax, sWid 	sub	eax, 300 	mov	Wwd, eax 	mov	eax, sHgt 	sub	eax, 300 	mov	Wht, eax ;установим позицию окна "Текст" 	invoke	MoveWindow, hWin, 150, 150, Wwd, Wht, 0  elseif uMsg == WM_SIZE ;установим позицию окна редактора 	invoke	GetDlgItem, hWin, IDC_EDIT	;eax = hEdit 	mov	edx, lParam			;размер клиентской части 	mov	ecx, edx 	and	edx, 0ffffh			;младшее слово - ширина 	shr	ecx, 16				;старшее - высота 	invoke	MoveWindow, eax, 0, 0, edx, ecx, 0 	 else						;остальное - по-умолчанию 	invoke DefWindowProc,hWin,uMsg,wParam,lParam 	ret  endif 	return 0				;возврат наших отработок  TextWndProc endp  ;считаем размеры и координаты изображения ;hBmp - описатель изображения ;hWin - окно, куда будем выводить картинку ;pRectBmp - адрес RECT, куда запишем позицию и размер вывода картинки ;pSizeBMP - ширина и высота картинки CalcSize	proc	uses edi esi, hBmp:dword, hWin:HWND, pRectBMP:dword, pSizeBMP:dword LOCAL	BMap:BITMAP, rc:RECT 	invoke	GetObject, hBmp, size BITMAP, ADDR BMap	;узнаем размер картинки 	invoke	GetClientRect, [hWin], ADDR rc		; и размер окна  	mov	edi, [pRectBMP]				;адрес RECT 	mov	[(RECT ptr [edi]).left], 2		;начальный X вывода 	mov	[(RECT ptr [edi]).top], 2		;начальный Y вывода 	mov	eax, [rc.right] 	sub	eax, 4 	mov	[(RECT ptr [edi]).right], eax		;ширина области вывода 	mov	eax, [rc.bottom] 	sub	eax, 4 	mov	[(RECT ptr [edi]).bottom], eax		;высота области вывода  	mov	esi, [pSizeBMP]				;адрес POINT 	m2m	[(POINT ptr [esi]).x], [BMap.bmWidth]	;ширина картинки 	m2m	[(POINT ptr [esi]).y], [BMap.bmHeight]	;высота картинки  ;все последующее для перерасчета размера области вывода, чтобы картинка  ; пропорционально масштабировалась, т.е. пропорционально растягивалась/сжималась  ; до ближайшей стороны области вывода. ;Если убрать, то картинка будет растягиваться/сжиматься в области непропорционально 	mov	eax, [(RECT ptr [edi]).right] 	imul	[(POINT ptr [esi]).y] 	mov	ecx, eax 	mov	eax, [(RECT ptr [edi]).bottom] 	imul	[(POINT ptr [esi]).x] 	cmp	eax, ecx 	jz	CSRet 	jb	CSWidth 	mov	eax, ecx 	idiv	[(POINT ptr [esi]).x] 	mov	[(RECT ptr [edi]).bottom], eax 	jmp	CSRet CSWidth: 	idiv	[(POINT ptr [esi]).y] 	mov	[(RECT ptr [edi]).right], eax CSRet: 	ret CalcSize	endp  ;загружаем BMP, создаем совместимый контекст, сохраняем эту инфу в структуре окна ;hwnd - описатель окна, куда будем выводить картинку ;szNаme - имя файла SetBmp	proc	uses esi edi ebx, hwnd:dword, szName:dword 	xor	esi, esi	;совместимый hdc ;загрузим BMP-файл 	mov	edi, rv(LoadImage,0, szName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE) ;получилось? 	.if edi != 0 ;создадим совместимый контекст 	  mov	ebx, rv(GetDC, hwnd)		;описатель контекста нашего окна 	  mov	esi, rv(CreateCompatibleDC, ebx);совместимый с ним 	  invoke ReleaseDC, hwnd, ebx		;освободим контекст нашего окна ;если совместимый контекст есть, то выберем в него наш BitMap 	  .if esi != 0 		invoke SelectObject, esi, edi	;картинка в совместимом контексте 	  .endif 	.endif 	mov	ebx, rv(GlobalAlloc, GMEM_FIXED, 8)	;резервируем 8 байт, для 2 dword-ов 	mov	[(BitMapData ptr [ebx]).hBmap], edi	;сохраним hBitMap 	mov	[(BitMapData ptr [ebx]).hMhdc], esi	;совместимый контекст 	invoke	SetWindowLong, hwnd, GWL_USERDATA, ebx	;сохраним адрес структуры в данных окна! 	ret SetBmp	endp  ;функция окна BmpWndProc proc uses edi esi,hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD LOCAL 	Wwd:DWORD,		;ширина основного окна 	Wht:DWORD,		;высота основного окна 	ps:PAINTSTRUCT  if uMsg == WM_CREATE ;создание окна 	mov	eax, lParam	;адрес структуры с именем файла 	invoke SetBmp, hWin, [eax] ;подготовимся к выводу  ;посчитаем координаты окна, сделаем в центре, по 150 с каждой стороны 	mov	eax, sWid 	sub	eax, 300 	mov	Wwd, eax 	mov	eax, sHgt 	sub	eax, 300 	mov	Wht, eax ;переместим окно 	invoke	MoveWindow, hWin, 150, 150, Wwd, Wht, 0  elseif uMsg == WM_SIZE ;пересчитаем размер и положение картинки, исходя из размера окна ;получим адрес структуры из данных окна 	invoke	GetWindowLong,hWin,GWL_USERDATA		;eax=BitMapData ptr 	mov	esi, [(BitMapData ptr [eax]).hBmap]	;esi=hBitMap 	.if esi != 0 ;посчитаем размеры, если картинка вообще есть 	  invoke CalcSize, esi, hWin, addr rectBMP, addr sizeBMP ;перерисуем 	  invoke InvalidateRect, hWin, 0, 1 	.endif  elseif uMsg == WM_PAINT ;рисуем BitMap 	mov	edi, rv(BeginPaint,hWin,ADDR ps)	;edi=hDC 	mov	esi, rv(GetWindowLong,hWin,GWL_USERDATA);esi=BitMapData ptr 	mov	esi, [(BitMapData ptr [esi]).hMhdc]	;esi=hMemDC 	.if esi != 0				;надо что-то рисовать? ;копируем с масштабированием из совместимого контекста в окно! 	  invoke StretchBlt, edi, [rectBMP.left], [rectBMP.top], [rectBMP.right],  		 [rectBMP.bottom], esi, 0, 0, [sizeBMP.x], [sizeBMP.y], SRCCOPY 	.endif 	invoke	EndPaint, hWin, ADDR ps  else 	invoke DefWindowProc,hWin,uMsg,wParam,lParam 	ret  endif 	return 0  BmpWndProc endp  end start 


Файл ресурсов, исключительно только ради иконки.
Задайте любую, какая Вам нравится

rsrc.rc

Код :
#include "\masm32\include\resource.h"  #define	IDI_ICON	500 IDI_ICON ICON MOVEABLE PURE LOADONCALL DISCARDABLE "dialog.ico" 

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 01.11.2011, 15:47
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    04 ноября 2011, 01:39
RFpro.ru: Ассемблер? Это просто! Учимся программировать    03 ноября 2011, 00:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    23 октября 2011, 21:34

Все выпуски рассылки

5 ноября 2011 отмечают:
День военного разведчика
Дни гигантского омлета в&nbsp;США
Всемирный день мужчин
День разведывательных войск Армении
День здоровья в&nbsp;Туркменистане
День Арафат
День кекри в&nbsp;Финляндии

Именины: Александр, Афанасий, Владимир, Иван, Игнатий, Николай, Петр, Яков
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Клуб для людей, у которых дома живут Кошки
Кошка – одно из немногих животных, простое созерцание которого способно приносить огромное эстетическое наслаждение!
Темы: 4389   Участники: 3814
  Европа - это просто!
Иммиграция и жизнь в ЕС. Иммиграционные консультации по Европе. Общение участников рассылок проекта Европа - это просто! Советы, ответы, пожелания и информация по Европе от жителей.
Темы: 184   Участники: 3002
  Чем хороша жизнь за границей?Все за и против
А может поехать за границу? Там говорят хорошо?! Отзывы и общение с теми , кто уехал из России, но не прочь пообщаться с соотечественниками
Темы: 555   Участники: 8797
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий