не отображается диалоговое окно

Тема в разделе "WASM.WIN32", создана пользователем arrrg, 17 июл 2009.

  1. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    покажи стили ListView,а то у тебя в исходниках только ListBox нашел,возможно одна из причин то что ты не указал LVS_REPORT в стилях ListView.
     
  2. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    Код (Text):
    1. BEGIN
    2.   CONTROL "",IDC_LSV1,"SysListView32",WS_CHILD|WS_VISIBLE|WS_TABSTOP|LVS_SORTDESCENDING|LVS_REPORT,0,0,528,353
    3. END
     
  3. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    #define IDC_LSV1 1001
     
  4. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    а ты InitCommonControls вызывал?вообще лучше покажи исходник
     
  5. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    при чом тут InitCommonControls когда всё это происходит в диалоговом окне и точнотакже в файле ресурсов описан LISTVIEW
     
  6. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    при том что ListView,Tree view,Toolbar... описаны в comctl32.dll и чтобы система автоматом подгрузила эту dll у тебя в импорте должна быть хоть одна фунция из этой dll,ну или можешь юзать LoadLibrary,а InitCommonControls эта функция пустушка которая находится в comctl32.dll и предназначена только для того чтобы создать запись в импорте,а вообще почитай уроки Iczelion -a,там об этом хорошо написано.
     
  7. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    функции библиотеки comctl32.dll у меня обьявлены внешними
    а насчёт InitCommonControls, что с ним что без него, одно и тоже
     
  8. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    код-
    IP_LISTER.ASM
    Код (Text):
    1. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    2.  
    3.       .486                      ; create 32 bit code
    4.       .model flat, stdcall      ; 32 bit memory model
    5.       option casemap :none      ; case sensitive
    6.  
    7.       include IP_LISTER.inc        ; local includes for this file
    8.  
    9. .code
    10.  
    11. start:
    12.  
    13. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    14.  
    15.     ; ------------------
    16.     ; set global values
    17.     ; ------------------
    18.       mov hInstance,   rv(GetModuleHandle, NULL)
    19.       mov CommandLine, rv(GetCommandLine)
    20.       mov hIcon,       rv(LoadIcon,hInstance,500)
    21.       mov hCursor,     rv(LoadCursor,NULL,IDC_ARROW)
    22.       mov sWid,        rv(GetSystemMetrics,SM_CXSCREEN)
    23.       mov sHgt,        rv(GetSystemMetrics,SM_CYSCREEN)
    24.  
    25.       call Main
    26.  
    27.       invoke ExitProcess,eax
    28.  
    29. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    30.  
    31. Main proc
    32.  
    33.     LOCAL Wwd:DWORD,Wht:DWORD,Wtx:DWORD,Wty:DWORD
    34.  
    35.     STRING szClassName,"ProStart_Class"
    36.  
    37.   ; --------------------------------------------
    38.   ; register class name for CreateWindowEx call
    39.   ; --------------------------------------------
    40.     invoke RegisterWinClass,ADDR WndProc,ADDR szClassName,
    41.                        hIcon,hCursor,COLOR_BTNFACE+1
    42.  
    43.     mov Wwd, 300
    44.     mov Wht, 250
    45.     invoke TopXY,Wwd,sWid
    46.     mov Wtx, eax
    47.     invoke TopXY,Wht,sHgt
    48.     mov Wty, eax
    49.  
    50.     invoke CreateWindowEx,WS_EX_LEFT,
    51.                           ADDR szClassName,
    52.                           ADDR szDisplayName,
    53.                           WS_OVERLAPPED or WS_SYSMENU,
    54.                           Wtx,Wty,Wwd,Wht,
    55.                           NULL,NULL,
    56.                           hInstance,NULL
    57.     mov hWnd,eax
    58.  
    59.   ; ---------------------------
    60.   ; macros for unchanging code
    61.   ; ---------------------------
    62.     DisplayWindow hWnd,SW_HIDE
    63.  
    64.     call MsgLoop
    65.     ret
    66.  
    67. Main endp
    68.  
    69. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    70.  
    71. RegisterWinClass proc lpWndProc:DWORD, lpClassName:DWORD,
    72.                       Icon:DWORD, Cursor:DWORD, bColor:DWORD
    73.  
    74.     LOCAL wc:WNDCLASSEX
    75.  
    76.     mov wc.cbSize,         sizeof WNDCLASSEX
    77.     mov wc.style,          CS_BYTEALIGNCLIENT or \
    78.                            CS_BYTEALIGNWINDOW
    79.     m2m wc.lpfnWndProc,    lpWndProc
    80.     mov wc.cbClsExtra,     NULL
    81.     mov wc.cbWndExtra,     NULL
    82.     m2m wc.hInstance,      hInstance
    83.     m2m wc.hbrBackground,  bColor
    84.     mov wc.lpszMenuName,   NULL
    85.     m2m wc.lpszClassName,  lpClassName
    86.     m2m wc.hIcon,          Icon
    87.     m2m wc.hCursor,        Cursor
    88.     m2m wc.hIconSm,        Icon
    89.  
    90.     invoke RegisterClassEx, ADDR wc
    91.  
    92.     ret
    93.  
    94. RegisterWinClass endp
    95.  
    96. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    97.  
    98. MsgLoop proc
    99.  
    100.     LOCAL msg:MSG
    101.  
    102.     push esi
    103.     push edi
    104.     xor edi, edi                        ; clear EDI
    105.     lea esi, msg                        ; Structure address in ESI
    106.     jmp jumpin
    107.  
    108.     StartLoop:
    109.       invoke TranslateMessage, esi
    110.     ; --------------------------------------
    111.     ; perform any required key processing here
    112.     ; --------------------------------------
    113.       invoke DispatchMessage,  esi
    114.     jumpin:
    115.       invoke GetMessage,esi,edi,edi,edi
    116.       test eax, eax
    117.       jnz StartLoop
    118.  
    119.     mov eax, msg.wParam
    120.     pop edi
    121.     pop esi
    122.  
    123.     ret
    124.  
    125. MsgLoop endp
    126.  
    127. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    128.  
    129. WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    130.  
    131.     LOCAL var    :DWORD
    132.     LOCAL caW    :DWORD
    133.     LOCAL caH    :DWORD
    134.     LOCAL Rct    :RECT
    135.     LOCAL buffer1[260]:BYTE  ; these are two spare buffers
    136.     LOCAL buffer2[260]:BYTE  ; for text manipulation etc..
    137. invoke DialogBoxParam,hInstance,offset szDisplayName,NULL,offset dlgproc,WM_INITDIALOG
    138.     Switch uMsg
    139.    
    140.       Case WM_COMMAND
    141.    
    142.       Case WM_CREATE
    143.        
    144.       invoke DialogBoxParamA,hInstance,IDD_DLG1,NULL,offset dlgproc,WM_INITDIALOG
    145.        
    146.       Case WM_SYSCOLORCHANGE
    147.  
    148.       Case WM_SIZE
    149.  
    150.       Case WM_CLOSE
    151.  
    152.       Case WM_DESTROY
    153.         invoke PostQuitMessage,NULL
    154.         return 0
    155.  
    156.     Endsw
    157.  
    158.     invoke DefWindowProc,hWin,uMsg,wParam,lParam
    159.  
    160.     ret
    161.  
    162. WndProc endp
    163.  
    164. dlgproc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    165. Switch uMsg
    166.  
    167. Case WM_INITDIALOG
    168. invoke InitCommonControls
    169.             mov column2.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    170.             mov column2.fmt,LVCFMT_LEFT
    171.             mov column2.pszText,offset Heading2
    172.             mov column2.lx,150
    173.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column2
    174.             mov column3.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    175.             mov column3.fmt,LVCFMT_LEFT
    176.             mov column3.pszText,offset Heading3
    177.             mov column3.lx,149
    178.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column3
    179.             mov column1.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    180.             mov column1.fmt,LVCFMT_LEFT
    181.             mov column1.pszText,offset Heading1
    182.             mov column1.lx,249
    183.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column1
    184.            
    185.            
    186.             mov column2.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    187.             mov column2.fmt,LVCFMT_LEFT
    188.             mov column2.pszText,offset Heading2
    189.             mov column2.lx,150
    190.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column2
    191.                         mov column3.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    192.             mov column3.fmt,LVCFMT_LEFT
    193.             mov column3.pszText,offset Heading3
    194.             mov column3.lx,149
    195.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column3
    196.                                     mov column1.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    197.             mov column1.fmt,LVCFMT_LEFT
    198.             mov column1.pszText,offset Heading1
    199.             mov column1.lx,249
    200.             invoke SendMessage,ListBoxhwnd,LVM_INSERTCOLUMN,0,addr column1
    201.            
    202. Case WM_CLOSE
    203. invoke EndDialog,hWin,0
    204. invoke PostQuitMessage,NULL
    205.         return 0
    206. Endsw
    207. xor eax,eax
    208. ret
    209. dlgproc endp
    210.  
    211. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    212.  
    213. OPTION PROLOGUE:NONE
    214. OPTION EPILOGUE:NONE
    215.  
    216. TopXY proc wDim:DWORD, sDim:DWORD
    217.  
    218.     mov eax, [esp+8]
    219.     sub eax, [esp+4]
    220.     shr eax, 1
    221.  
    222.     ret 8
    223.  
    224. TopXY endp
    225.  
    226. OPTION PROLOGUE:PrologueDef
    227. OPTION EPILOGUE:EpilogueDef
    228.  
    229.  
    230. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    231.  
    232. end start
    IP_LISTER.INC
    Код (Text):
    1. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    2.  
    3. ;     include files
    4. ;     ~~~~~~~~~~~~~
    5.       include \masm32\include\windows.inc
    6.       include \masm32\include\masm32.inc
    7.       include \masm32\include\gdi32.inc
    8.       include \masm32\include\user32.inc
    9.       include \masm32\include\kernel32.inc
    10.       include \masm32\include\Comctl32.inc
    11.       include \masm32\include\comdlg32.inc
    12.       include \masm32\include\shell32.inc
    13.       include \masm32\include\oleaut32.inc
    14.       include \masm32\include\msvcrt.inc
    15.       include \masm32\macros\macros.asm
    16.  
    17. ;     libraries
    18. ;     ~~~~~~~~~
    19.       includelib \masm32\lib\masm32.lib
    20.       includelib \masm32\lib\gdi32.lib
    21.       includelib \masm32\lib\user32.lib
    22.       includelib \masm32\lib\kernel32.lib
    23.       includelib \masm32\lib\Comctl32.lib
    24.       includelib \masm32\lib\comdlg32.lib
    25.       includelib \masm32\lib\shell32.lib
    26.       includelib \masm32\lib\oleaut32.lib
    27.       includelib \masm32\lib\msvcrt.lib
    28.  
    29. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    30.  
    31.         ;=================
    32.         ; Local prototypes
    33.         ;=================
    34.         WinMain          PROTO :DWORD,:DWORD,:DWORD,:DWORD
    35.         WndProc          PROTO :DWORD,:DWORD,:DWORD,:DWORD
    36.         TopXY            PROTO :DWORD,:DWORD
    37.         Paint_Proc       PROTO :DWORD
    38.         RegisterWinClass PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    39.         MsgLoop          PROTO
    40.         Main             PROTO
    41.         dlgproc          PROTO :DWORD,:DWORD,:DWORD,:DWORD
    42.  
    43.       AutoScale MACRO swidth, sheight
    44.         invoke GetPercent,sWid,swidth
    45.         mov Wwd, eax
    46.         invoke GetPercent,sHgt,sheight
    47.         mov Wht, eax
    48.  
    49.         invoke TopXY,Wwd,sWid
    50.         mov Wtx, eax
    51.  
    52.         invoke TopXY,Wht,sHgt
    53.         mov Wty, eax
    54.       ENDM
    55.  
    56.       DisplayMenu MACRO handl, IDnum
    57.         invoke LoadMenu,hInstance,IDnum
    58.         invoke SetMenu,handl,eax
    59.       ENDM
    60.  
    61.       DisplayWindow MACRO handl, ShowStyle
    62.         invoke ShowWindow,handl, ShowStyle
    63.         invoke UpdateWindow,handl
    64.       ENDM
    65.  
    66.     .data
    67.         szDisplayName db "IDD_DLG1",0
    68.         title db "IP LISTER",0
    69.         IDD_DLG1 equ 1000
    70.         column1 LV_COLUMN   <>
    71.         column2 LV_COLUMN   <>
    72.         column3 LV_COLUMN   <>
    73.         ListBoxhwnd equ 1001
    74.         Heading1 db "название",0
    75.         Heading2 db "расположение",0
    76.         Heading3 db "количество пистолетов",0
    77.  
    78.     .data?
    79.         hInstance dd ?
    80.         CommandLine dd ?
    81.         hIcon dd ?
    82.         hCursor dd ?
    83.         sWid dd ?
    84.         sHgt dd ?
    85.         hWnd dd ?
    86.  
    87.  
    88. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Inserted modules ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    89.  
    90.  
    91. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    rsrc.rc
    Код (Text):
    1. #define IDD_DLG1 1000
    2. #define IDC_LSV1 1001
    3. #define connection 10000
    4. #define IDM_1 10001
    5. #define IDM_2 10002
    6. #define IDM_3 10003
    7.  
    8. #include "resource.h"
    9.  
    10. IDD_DLG1 DIALOGEX 6,6,528,353
    11. CAPTION "IP LISTER"
    12. FONT 8,"MS Sans Serif",0,0,0
    13. MENU connection
    14. STYLE WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
    15. EXSTYLE WS_EX_TOOLWINDOW
    16. BEGIN
    17.   CONTROL "",IDC_LSV1,"SysListView32",WS_CHILD|WS_VISIBLE|LVS_REPORT,0,0,528,353
    18. END
    19.  
    20. connection MENU
    21. BEGIN
    22.   MENUITEM "выход",IDM_1,HELP
    23.   MENUITEM "подключится",IDM_2
    24.   MENUITEM "отключится",IDM_3,GRAYED
    25. END
     
  9. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    да у тебя в коде ListBoxHwnd определена как
    Код (Text):
    1. ListBoxHwnd equ 1001
    в ListBoxHwnd должен быть хэндл ListView а не его ID,хэндл можно пулучить используя GetDlgItem,следующим образом
    Код (Text):
    1. GetDlgItem,hwnd,IDC_LSV1
    где hwnd хэндл окна родителя( вовзрашенный CreateWindowEx ),и полученный хэндл передевай SendMessage.

    И почитай Iczeliona.
     
  10. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    всёравно ничего -
    Код (Text):
    1. Case WM_CREATE
    2.        invoke GetDlgItem,hWnd,IDC_LSV1
    3.         mov ListBoxhwnd,eax
    4.       invoke DialogBoxParamA,hInstance,IDD_DLG1,NULL,offset dlgproc,WM_INITDIALOG
    5.       mov hDlg,eax
    6.     invoke SendMessage,hDlg,WM_MES1,offset ListBoxhwnd,0
    Код (Text):
    1. Switch uMsg
    2.  
    3. Case WM_MES1
    4.  
    5.                        
    6.             mov column2.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    7.             mov column2.fmt,LVCFMT_LEFT
    8.             mov column2.pszText,offset Heading2
    9.             mov column2.lx,150
    10.             invoke SendMessage,[wParam],LVM_INSERTCOLUMN,0,addr column2
    11.             mov column3.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    12.             mov column3.fmt,LVCFMT_LEFT
    13.             mov column3.pszText,offset Heading3
    14.             mov column3.lx,149
    15.             invoke SendMessage,[wParam],LVM_INSERTCOLUMN,0,addr column3
    16.             mov column1.imask,LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    17.             mov column1.fmt,LVCFMT_LEFT
    18.             mov column1.pszText,offset Heading1
    19.             mov column1.lx,249
    20.             invoke SendMessage,[wParam],LVM_INSERTCOLUMN,0,addr column1
    Код (Text):
    1. WM_MES1 dd WM_USER+100
     
  11. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    слушай,еще раз просмотрел твои исходники,мда столько ошибок в одном файле...

    вообщем слушай,
    1.
    Код (Text):
    1. invoke CreateWindowEx,WS_EX_LEFT,
    2.                           ADDR szClassName,
    3.                           ADDR szDisplayName,
    4.                           WS_OVERLAPPED or WS_SYSMENU,
    5.                           Wtx,Wty,Wwd,Wht,
    6.                           NULL,NULL,
    7.                           hInstance,NULL
    это тебе не C++ в масме нужно так
    Код (Text):
    1. invoke CreateWindowEx,WS_EX_LEFT,\
    2.                           ADDR szClassName,\
    3.                          ADDR szDisplayName,\
    4.                          WS_OVERLAPPED or WS_SYSMENU,\
    5.                          Wtx,\
    6.                          Wty,\
    7.           Wwd,\
    8.           Wht,\
    9.                          NULL,\
    10.           NULL,\
    11.                          hInstance,\
    12.           NULL
    2.ну про ListBoxHwnd я тебе уже сказал

    3.ну там еще мелкие баги,уже не вспомню

    вобщем чтобы не захламять пост все файлы в аттаче,и фотик чтобы убедилася что все правильно.
     
  12. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    так ведь компилятор не ругался
     
  13. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    Код (Text):
    1. invoke CreateWindowEx,WS_EX_LEFT,
    2.                           ADDR szClassName,
    3.                           ADDR szDisplayName,
    4.                           WS_OVERLAPPED or WS_SYSMENU,
    5.                           Wtx,Wty,Wwd,Wht,
    6.                           NULL,NULL,
    7.                           hInstance,NULL
    после некоторых тестов оказалось что масм 9 версии это все нормально ассемблит.
     
  14. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    правильно, потомучто компилятор масма игронорирует символ конца строки,и считает параметром всё, что стоит после имени внешней процедуры, пусть даже это будет вызов другой процедуры, если вы не дописали несколько параметров