![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 28.02.2012
Сообщений: 2
|
![]()
;код примера
.386p .model flat, stdcall option casemap:none includelib .\masm32\lib\kernel32.lib includelib .\masm32\lib\user32.lib include .\masm32\include\windows.inc include .\masm32\include\kernel32.inc include .\masm32\include\user32.inc .data newhwnd dd 0 hInst dd 00000000h szTitleName db 'Window Application',0 szClassName db 'ASMCLASS32',0 msg MONMSGSTRUCT >; структура сообщения wc WNDCLASS >; структура класса .code start: Invoke GetModuleHandle,0 ; получаем hInstanse Mov [hInst], eax Mov [wc.style], CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLAS S ; устанавливаем стиль окна Mov [wc.lpfnWndProc], offset WndProc ; Mov [wc.cbClsExtra], 0 Mov [wc.cbWndExtra], 0 Mov eax, [hInst] Mov [wc.hInstance], eax Invoke LoadIcon,0,IDI_APPLICATION ; получаем значок приложения по ; умолчанию Mov [wc.hIcon], eax Invoke LoadCursorA,0,IDC_ARROW ; получаем курсор по умолчанию Mov [wc.hCursor], eax Mov [wc.hbrBackground], COLOR_BACKGROUND+1 Mov dword ptr [wc.lpszMenuName], 0 Mov dword ptr [wc.lpszClassName], offset szClassName ; задаём имя класса ;окна Invoke RegisterClassA,offset wc ; регистрируем класс окна Push 0 Push [hInst] ; дескриптор Push 0 Push 0 Push CW_USEDEFAULT ; высота Push CW_USEDEFAULT ; ширина Push CW_USEDEFAULT ; y Push CW_USEDEFAULT ; x Push WS_OVERLAPPEDWINDOW ; стиль Push offset szTitleName ; заголовок окна Push offset szClassName ; имя класса Push 0 ; дополнительный стиль Call CreateWindowEx ; создаём окно mov [newhwnd], eax ; сохраняем его дескриптор invoke ShowWindow,[newhwnd],SW_SHOWNORMAL; показываем окно invoke UpdateWindow, [newhwnd]; обновляем его msg_loop: ; запускаем цикл обработки сообщений invoke GetMessage,offset msg, 0,0,0 cmp ax, 0 je end_loop invoke TranslateMessage, offset msg invoke DispatchMessage, offset msg jmp msg_loop end_loop: invoke ExitProcess, 0 WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD Cmp [wmsg], WM_DESTROY Je wmdestroy Cmp [wmsg], WM_KEYDOWN Je wmkeydown Invoke DefWindowProcA,[hwnd],[wmsg],[wparam],[lparam] ; вызываем стандартный обработчик сообщений Jmp finish wmkeydown: cmp [wparam], VK_ESCAPE je wmdestroy; если нажата клавиша Escape то выход jmp finish wmdestroy: invoke PostQuitMessage, 0 invoke ExitProcess, 0 ; выход finish: ret WndProc endp end start при компиляции ошибка rc : fatal error rc1110 : could not open rsrc.rc что можно сделать? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
барсун
ты используешь для сборки программы батник, в котором обрабатывается файл с расширением rc, посмотри в папке masm32\bin есть и другие бат-файлы |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Треугольное окно со сторонами A, B, C. Проверить, пройдёт ли в окно коробка цилиндрической формы (D и H) (паскаль) | ihimaru | Помощь студентам | 5 | 02.10.2011 22:11 |
[?] Послать клавишу в чужое окно, не выводя окно на передний план. | Moriarty | Win Api | 4 | 21.02.2011 05:11 |
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. | RustreX | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.11.2007 19:28 |