Не создаётся TreeView.

Тема в разделе "WASM.WIN32", создана пользователем AlexCab, 8 фев 2009.

  1. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Нашол хорошую статью по теме http://www.wasm.ru/article.php?article=1001019,
    но там код под masm, под fasm не работает, просто не создаёт окно (возвращает 0),заменяю "SysTreeView32" на "edit"
    всё отлично, вот код:
    Код (Text):
    1.          invoke CreateWindowEx,NULL,TreeViewClass,NULL,\
    2.                 WS_CHILD+WS_VISIBLE+TVS_HASLINES+TVS_HASBUTTONS+TVS_LINESATROOT,\
    3.                 0,0,100,100,[hwnd],NULL,\
    4.                 [wc.hInstance],NULL
    По "GetLastError" возвращает код 2.
    Мстика:)
     
  2. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    InitCommonControls в секции импорта есть?
     
  3. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Вот весь код(изменённный пример "MINIPAD"):
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3.  
    4. include 'INCLUDE\win32a.inc'
    5.  
    6.  
    7. section '.data' data readable writeable
    8.  
    9.   _class db 'Test',0
    10.   _title db 'Test',0
    11.    TreeViewClass   db 'SysTreeView32',0
    12.   wc WNDCLASSEX 48,0,WindowProc,0,0,NULL,NULL,NULL,COLOR_APPWORKSPACE,NULL,_class,0
    13.   msg MSG
    14.  
    15. section '.code' code readable executable
    16.  
    17.   start:
    18.         invoke  GetModuleHandle,0
    19.         mov     [wc.hInstance],eax
    20.         invoke  LoadIcon,eax,17
    21.         mov     [wc.hIcon],eax
    22.         invoke  LoadCursor,0,IDC_ARROW
    23.         mov     [wc.hCursor],eax
    24.         invoke  RegisterClassEx,wc
    25.         invoke  CreateWindowEx,0,_class,_title,WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,100,100,256,256,NULL,0,[wc.hInstance],NULL
    26.   msg_loop:
    27.         invoke  GetMessage,msg,NULL,0,0
    28.         or      eax,eax
    29.         jz      end_loop
    30.         invoke  TranslateMessage,msg
    31.         invoke  DispatchMessage,msg
    32.         jmp     msg_loop
    33.  
    34.   end_loop:
    35.         invoke  ExitProcess,[msg.wParam]
    36.         invoke  InitCommonControls
    37.  
    38. proc WindowProc hwnd,wmsg,wparam,lparam
    39.         push    ebx esi edi
    40.         cmp     [wmsg],WM_CREATE
    41.         je      wmcreate
    42.         cmp     [wmsg],WM_DESTROY
    43.         je      wmdestroy
    44.   defwndproc:
    45.         invoke  DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
    46.         jmp     finish
    47.   wmcreate:
    48.  
    49.  
    50.          invoke CreateWindowEx,NULL,TreeViewClass,NULL,\
    51.                 WS_CHILD+WS_VISIBLE+TVS_HASLINES+TVS_HASBUTTONS+TVS_LINESATROOT,\
    52.                 0,0,100,100,[hwnd],NULL,\
    53.                 [wc.hInstance],NULL
    54.  
    55.                 cmp eax,0
    56.                 jne @1
    57.                 invoke  ExitProcess,0
    58.                 @1:
    59.  
    60.  
    61.         jmp     finish
    62.   wmdestroy:
    63.         invoke  PostQuitMessage,0
    64.         xor     eax,eax
    65.   finish:
    66.         pop     edi esi ebx
    67.         ret
    68. endp
    69.  
    70. section '.idata' import data readable writeable
    71.   library kernel,'KERNEL32.DLL',\
    72.           user,'USER32.DLL',\
    73.           gdi,'GDI32.DLL'
    74.   import kernel,\
    75.          GetModuleHandle,'GetModuleHandleA',\
    76.          ExitProcess,'ExitProcess'
    77.   import user,\
    78.          RegisterClassEx,'RegisterClassExA',\
    79.          CreateWindowEx,'CreateWindowExA',\
    80.          DefWindowProc,'DefWindowProcA',\
    81.          GetMessage,'GetMessageA',\
    82.          TranslateMessage,'TranslateMessage',\
    83.          DispatchMessage,'DispatchMessageA',\
    84.          LoadCursor,'LoadCursorA',\
    85.          LoadIcon,'LoadIconA',\
    86.          PostQuitMessage,'PostQuitMessage'
    87.   import comctl32,\
    88.          InitCommonControls,'InitCommonControls'
     
  4. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
     
  5. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Да, от глупости никто не застрахова:dntknw:
    Извените что потривожил.