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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2012, 21:29   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Форма с кнопкой

Добрый вечер. Я осознаю глупость вопроса, но не доходит мне: что же все-таки не так? Я хочу создать форму с кнопкой, форму уже сделал, а вот кнопку - никак. Дело элементарное, поэтому прошу ткнуть меня носом
Код:
include 'F:/FASM/INCLUDE/win32ax.inc'
.data
wc                WNDCLASS
msg               MSG
hwnd              dd 0
hInstance         dd 0
ClassName         db 'MyWindow',0
Caption           db 'Âíèìàíèå',0
Text              db 'Îáíàðóæåíà îøèáêà. Ïðèëîæåíèå áóäåò çàêðûòî. Ïðèìèòå èçâèíåíèÿ çà íåóäîáñòâî',0
CaptionWindow     db 'Îêíî',0
pClass            dd 0
cButton1          dd 5000
hButton1          dd 0

.code
start:
          mov     [wc.style],0
          mov     [wc.cbClsExtra],0
          mov     [wc.cbWndExtra],0
          invoke  GetModuleHandleA,0
          mov     [hInstance],eax
          mov     [wc.hInstance],eax
          mov     [wc.lpfnWndProc],WndProc
          invoke  LoadIcon,NULL,IDI_APPLICATION
          mov     [wc.hIcon],eax
          invoke  LoadCursor,NULL,IDC_ARROW
          mov     [wc.hCursor],eax
          mov     [wc.hbrBackground],COLOR_WINDOW+10
          mov     [wc.lpszMenuName],NULL
          mov     [wc.lpszClassName],ClassName
          invoke  RegisterClass,wc
          cmp     eax,0
          jz      exit
          mov     [pClass],eax
          invoke  CreateWindowEx,0,ClassName,CaptionWindow,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,100,100,500,500,NULL,NULL,[hInstance],NULL
          cmp     eax,0
          jz      error
          mov     [hwnd],eax

msg_loop:

          invoke  GetMessage,msg,NULL,0,0
          cmp     eax,0
          jz      exit
          invoke  DispatchMessage,msg

          jmp msg_loop

error:    invoke  MessageBox,0,Text,Caption,0
exit:     invoke  ExitProcess,[msg.wParam]
.end start


proc WndProc,hWnd,msg,wParam,lParam

         push    ebx esi edi

         cmp     [msg],WM_DESTROY
         jz      wmdestroy
        ; cmp     [msg],WM_LBUTTONDOWN
         ;jz      wmmousedown
         cmp     [msg],WM_CREATE
         jz      wmcreate

         invoke  DefWindowProc,[hWnd],[msg],[wParam],[lParam]
         jmp     finish

wmcreate:

         invoke  CreateWindowEx,0,'button','321',WS_CHILD+WS_VISIBLE+BS_DEFPUSHBUTTON,100,100,200,20,[hwnd],[cButton1],[hInstance],NULL
         cmp     eax,0
         jz      error
         jmp     finish

wmmousedown:

         invoke  MessageBox,0,'Âû êëèêíóëû ìûøêîé','Âíèìàíèå',0
         jmp     finish

wmdestroy:

         invoke  PostQuitMessage,0
         xor     eax,eax

finish:

        pop     edi esi ebx
        invoke  DefWindowProc,[hWnd],[msg],[wParam],[lParam]
        ret
        endp
Ошибка, по-моему, вот здесь(возвращает 0)
Код:
CreateWindowEx,0,'button','321',WS_CHILD+WS_VISIBLE+BS_DEFPUSHBUTTON,100,100,200,20,[hwnd],[cButton1],[hInstance],NULL
Может какой параметр неправильно передаю?
Заранее благодарю.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.07.2012, 12:22   #2
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

А что говорит GetLastError()?
rlib вне форума Ответить с цитированием
Старый 20.07.2012, 13:40   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

1406. Может на WS_CHILD ругается? Хотя если его убрать, то появляется ошибка 1401

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 20.07.2012 в 14:02.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.07.2012, 14:05   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
1406
Код ошибки смотреть не пробовали - Cannot create a top-level child window.
Родительское окно NULL.
waleri на форуме Ответить с цитированием
Старый 20.07.2012, 14:44   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
Родительское окно NULL.
Возьмем книгу Ганеева, или пример любой другой пример, и видим:
Код:
CreateWindowEx, 0, addr ButtClass, addr szStyleB7,
                    WS_CHILD or WS_VISIBLE,
                    485, 60, 24, 22, hwnd, 50, hInst, NULL
Если я не прав, то каковы ваши предложения. Как указать родительское окно?
Я тут посматриваю,в некоторых примерах используется InitCommonControls. Нужно ли его использовать?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 20.07.2012, 16:38   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Нужно использовать локальную hWnd вместо глобальной hwnd. WM_CREATE посылается из функции CreateWindowEx, другими словами, во время обработки этого сообщения, hwnd ещё не инициализирована.
netrino вне форума Ответить с цитированием
Старый 20.07.2012, 18:54   #7
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
Нужно использовать локальную hWnd вместо глобальной hwnd. WM_CREATE посылается из функции CreateWindowEx, другими словами, во время обработки этого сообщения, hwnd ещё не инициализирована.
Спасибо вам огромное.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПЕрвая форма, кликая по кнопке, другая форма Nadej C++ Builder 0 02.10.2011 17:58
Форма с кнопкой поиск и добавление записи Tessi123 Microsoft Office Access 5 23.08.2011 13:36
Проблема с кнопкой l'd Помощь студентам 1 29.10.2010 09:09
HTML форма с двумя полями для текста и кнопкой типа submit. DiSpalL HTML и CSS 5 02.06.2009 12:59
Форма с командной кнопкой!(VBA) Versifikator Помощь студентам 1 06.12.2007 20:25