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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2016, 14:50   #1
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию CreateDialogParam возращает 0

Приветствую! Ни как не получается создать пользовательское окно на базе не модального диалогового окна. Подскажите что не так?


Код:
format PE GUI 4.0
entry start
include 'win32a.inc'
include 'encoding\win1251.INC' 
include 'MY\MACROS\X_MACROS.inc'
macro X_dialog label, class, title, x, y, cx, cy, style, menu, exstyle, fontname, fontsize ;!В ОТЛИЧИЕ ОТ  ОРИГИНАЛА  ДОБАВЛЕН УКАЗАТЕЛЬ  НА  КЛАСС - CLASS
 { local data,size,items
   label dd RVA data,size,0,0
   data dd style or DS_SETFONT,exstyle +0
   dw items,x,y,cx,cy
   if menu+0 <> 0
    dw 0FFFFh
   end if
   du menu+0,class,0,title,0
   if fontname eq
    du 8,'MS Sans Serif',0
   else
    du fontsize+0,fontname,0
   end if
   align 4
   dialog_size equ size = $ - data
   dialog_items equ items = dialog_items_counter
   dialog_items_counter = 0 }
 
section '.data' data readable writeable
msg             MSG 
wc              WNDCLASS 0,MZ_WindowProc,0,DLGWINDOWEXTRA,0,0,0,COLOR_BTNFACE+1,0,ClassWin          ;! Для регистрации класса
ClassWin        db 'WinFirst',0
ErrorRegClass   db 'Ошибка регистрации класса!',0
errbuf          rb 24
 
section '.code' code readable executable 
start:
        invoke  LoadCursor,         0,IDC_APPSTARTING
        mov     [wc.hCursor],eax
        invoke  LoadIcon,           0,IDI_APPLICATION   
        mov     [wc.hIcon],eax          
        invoke  RegisterClass,      wc  
        cmp     eax,0
        jnz     @f
        invoke  MessageBox,         0,ErrorRegClass,0,MB_ICONERROR+MB_OK
        jmp     exit
    @@:
        invoke  GetModuleHandle,0
        invoke  CreateDialogParam,eax,ID_DLGONE,0,0,0
        cmp     eax,0
        jnz     @f
        invoke  GetLastError
        MMX_BTAD eax,errbuf                             ;! преобразует число в строку
        invoke MessageBox,0,errbuf,0,MB_OK
    @@:
msg_loop: 
    invoke  GetMessage,msg,0,0,0
    cmp     eax,0
    je      exit    
    invoke  TranslateMessage,msg
    invoke  DispatchMessage,msg
    jmp     msg_loop 
    
proc    MZ_WindowProc hwnd,wmsg,wparam,lparam
 
        push    ebx esi edi
        
        cmp     [wmsg],WM_CLOSE 
        je      .wmclose
        cmp     [wmsg],WM_DESTROY
        je      .wmdestroy
        cmp     [wmsg],WM_INITDIALOG
        je      .wminitdialog
 
        invoke  DefDlgProc,[hwnd],[msg],[wparam],[lparam]
        jmp     .out
        
.wmclose:      ;{
        invoke  DestroyWindow,[hwnd]
        jmp     .finish ;}
 
.wmdestroy:    ;{
        invoke PostQuitMessage,NULL
        jmp     .finish ;}  
        
.wminitdialog:  ;{
        invoke MessageBox,0,ClassWin,0,MB_OK
        jmp     .finish ;}
.finish:
        mov     eax,1
.out:
        pop     edi esi ebx
ret
endp        
 
exit:   
invoke  ExitProcess,0 
 
 
section '.rsrc' resource data readable
        directory       RT_DIALOG,dialogs,RT_MANIFEST,manifests
            
        resource        dialogs,ID_DLGONE,LANG_RUSSIAN+SUBLANG_DEFAULT,dlgWinOne
              
        X_dialog        dlgWinOne,"WinFirst",'МЕНЕДЖЕР ЗАКАЗОВ',                0,0,800,400,            WS_POPUP + WS_OVERLAPPEDWINDOW + DS_CENTER+WS_VISIBLE + DS_CENTER
        dialogitem     'BUTTON','ПОИСК',                                        1,0,0,70, 20,           WS_VISIBLE + BS_PUSHBUTTON
        enddialog       
         
        resource        manifests,1,LANG_ENGLISH+SUBLANG_DEFAULT,Manifest
       
        resdata         Manifest
        file            'WindowsXP.manifest'
        
ID_DLGONE               = 32        
endres       
         
         
section '.idata' import data readable writeable 
library kernel32,'kernel32.dll',\
        user32,'user32.dll'
        
include "api\kernel32.inc"
include "api\user32.inc"
mikado3333 вне форума Ответить с цитированием
Старый 11.05.2016, 21:47   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Ого! А FASM умеет компилить ресурсы, или это макросы? Посмотри каким-нибудь ResHacker-ом, насколько валидные ресурсы он создает.
Vapaamies вне форума Ответить с цитированием
Старый 16.05.2016, 07:27   #3
mikado3333
Пользователь
 
Регистрация: 25.09.2013
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Ого! А FASM умеет компилить ресурсы, или это макросы? Посмотри каким-нибудь ResHacker-ом, насколько валидные ресурсы он создает.
FASM умеет компилить ресурсы. Ресурсы создаются т.к. данный ресурс при создание не модального диалога создается, а вот при создании Пользовательского окна на базе диалогового не идет код
mikado3333 вне форума Ответить с цитированием
Ответ


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