Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите дописать программу, Вставить меню в окно и изменить вывод 
:(
    Опции темы
NFL
Дата 17.1.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Есть программа:

Код

.686
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
;include \masm32\include\windef.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\windows.lib
includelib \masm32\lib\windef.lib
WinMain proto :DWORD, :DWORD
.data
ClassName db "SimpleWinClass", 0
AppName db "Обробка повідомлень клавіатури", 0
MenuName db "FirstMenu", 0
ABOUT_STRUNG db "ВВод символов, подсчет количества гласных и согласных", 0ah, 0dh, "Выполнил: Сердюк Сергей, КИТ-18а", 0
char WPARAM 20h
.data?
hInstance HINSTANCE ?
.code
_start:
mov ecx, 0
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke WinMain, hInstance, SW_SHOWDEFAULT
invoke ExitProcess, eax
WinMain proc hInst:HINSTANCE, CmdShow:DWORD
LOCAL wc: WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
push hInst
pop wc.hInstance
mov wc.cbSize, SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.hbrBackground, COLOR_WINDOW+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
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
invoke RegisterClassEx, ADDR wc
invoke CreateWindowEx, 0, ADDR ClassName, ADDR AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 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
LOCAL hdc:HDC
LOCAL ps:PAINTSTRUCT
.IF uMsg==WM_DESTROY
invoke PostQuitMessage, NULL
.ELSEIF uMsg==WM_CHAR
push wParam
pop char
invoke InvalidateRect, hWnd, NULL, TRUE
.ELSEIF uMsg==WM_PAINT
invoke BeginPaint, hWnd, ADDR ps
mov hdc, eax
invoke TextOut, hdc, 30, 25, ADDR char, 1
invoke EndPaint, hWnd, ADDR ps
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.ENDIF
xor eax, eax
ret
WndProc endp
end _start


Она создает окно, обрабатывает нажатия клавиш и выводит нажатый символ...

Нужно вверху вставить меню (Файл, Результат, О программе)
с подпунктами:
Файл - Закрыть, Результат - Посчитать, О программе - Автор, Описание
И сделать так, чтобы символы вводились не по одному, а в строку smile 
Ну и написать функцию, которая бы считала количество гласных/согласных, но это уже сам напишу smile 
Гугол уже облазил первым делом.. Ничего не нашел... Кто может, помогите smile 
Программу надо исправить срочно smile 
PM MAIL   Вверх
586
Дата 17.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Код
.686
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
;include \masm32\include\windef.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\windows.lib
includelib \masm32\lib\windef.lib
WinMain proto :DWORD, :DWORD
.data
BufferPos dd 0
ClassName db "SimpleWinClass", 0
AppName db "Обробка повідомлень клавіатури", 0
MenuName db "FirstMenu", 0
ABOUT_STRING db "ВВод символов, подсчет количества гласных и согласных", 0ah, 0dh, "Выполнил: Сердюк Сергей, КИТ-18а", 0
szFile db "Файл", 0
szClose db "Закрыть", 0
szResult db "Результат", 0
szCalculate db "Посчитать", 0
szAbout db "О программе", 0
szAuthor db "Автор", 0
szDescription db "Описание", 0
szEmptyString db 0

ID_EXIT    equ 100
ID_CALCULATE equ 150
ID_ABOUTAUTHOR equ 200
ID_DESCRIPTION equ 205

.data?
Buffer db 256 dup(?)
hInstance HINSTANCE ?
.code
_start:
mov ecx, 0
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke WinMain, hInstance, SW_SHOWDEFAULT
invoke ExitProcess, eax
WinMain proc hInst:HINSTANCE, CmdShow:DWORD
LOCAL wc: WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
push hInst
pop wc.hInstance
mov wc.cbSize, SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.hbrBackground, COLOR_WINDOW+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
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
invoke RegisterClassEx, ADDR wc
invoke CreateWindowEx, 0, ADDR ClassName, ADDR AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 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
LOCAL hdc:HDC
LOCAL ps:PAINTSTRUCT
.IF uMsg==WM_DESTROY
  invoke PostQuitMessage, NULL
.ELSEIF uMsg==WM_CHAR
  mov eax, BufferPos
  .IF (eax >= (sizeof Buffer))
    invoke MessageBeep, 0
  .ELSE
    inc BufferPos
    
    mov edx, wParam
    mov byte ptr [Buffer+eax], dl

    invoke InvalidateRect, hWnd, NULL, TRUE
  .ENDIF
.ELSEIF uMsg==WM_PAINT
  invoke BeginPaint, hWnd, ADDR ps
  mov hdc, eax
  invoke TextOut, hdc, 30, 25, ADDR Buffer, BufferPos
  invoke EndPaint, hWnd, ADDR ps
.ELSEIF uMsg==WM_CREATE
  push ebx
  push esi
  invoke CreateMenu
  mov ebx, eax
  invoke CreateMenu
  mov esi, eax
  invoke AppendMenu, esi, MF_STRING or MF_BYCOMMAND, ID_EXIT, addr szClose
  invoke AppendMenu, ebx, MF_STRING or MF_POPUP, esi, addr szFile

  invoke CreateMenu
  mov esi, eax
  invoke AppendMenu, esi, MF_STRING or MF_BYCOMMAND, ID_CALCULATE, addr szCalculate
  invoke AppendMenu, ebx, MF_STRING or MF_POPUP, esi, addr szResult

  invoke CreateMenu
  mov esi, eax
  invoke AppendMenu, esi, MF_STRING or MF_BYCOMMAND, ID_ABOUTAUTHOR, addr szAuthor
  invoke AppendMenu, esi, MF_STRING or MF_BYCOMMAND, ID_DESCRIPTION, addr szDescription
  invoke AppendMenu, ebx, MF_STRING or MF_POPUP, esi, addr szAbout

  invoke SetMenu, hWnd, ebx
  pop esi
  pop ebx
.ELSEIF uMsg==WM_COMMAND
  movzx eax, word ptr wParam
  .IF eax==ID_EXIT
    invoke PostQuitMessage, NULL
  .ELSEIF eax==ID_CALCULATE
    invoke MessageBox, hWnd, addr szCalculate, addr szEmptyString, 0
  .ELSEIF eax==ID_ABOUTAUTHOR
    invoke MessageBox, hWnd, addr ABOUT_STRING, addr szEmptyString, 0
  .ELSEIF eax==ID_DESCRIPTION
    invoke MessageBox, hWnd, addr szDescription, addr szEmptyString, 0
  .ENDIF
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.ENDIF
xor eax, eax
ret
WndProc endp
end _start


Это сообщение отредактировал(а) 586 - 17.1.2010, 21:48
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.