Иконка не отрисовывается

Тема в разделе "WASM.BEGINNERS", создана пользователем 6aHguT, 13 дек 2005.

  1. 6aHguT

    6aHguT New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2005
    Сообщения:
    15
    Неубивайте сразу помогите пожалуста.

    Значит слов просто нет я в попе :dntknw:

    Хоть убей нему отрисовать тут верхнюю иконку имея такой код.
    Код (Text):
    1. DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    2.    
    3.     MOV eax,uMsg
    4.     .if eax == WM_CLOSE    
    5.         invoke  VirtualFree, MessageBufferAddr, 0, MEM_RELEASE
    6.         .if IsSaveSet == 1
    7.             invoke  SaveTheSet
    8.         .endif
    9.         invoke  PostQuitMessage,NULL
    10.     .elseif eax == WM_INITDIALOG
    11.    
    12.         invoke InitCommonControls
    13.         invoke GetDlgItem,hWnd,IDC_TAB1
    14.         MOV hwndTab,eax        
    15.         MOV ItemStruct.imask,TCIF_TEXT
    16.         MOV ItemStruct.lpReserved1,0
    17.         MOV ItemStruct.lpReserved2,0
    18.         MOV ItemStruct.iImage,0
    19.         MOV ItemStruct.lParam,0
    20.         MOV ItemStruct.pszText,OFFSET TabTitle1
    21.         MOV ItemStruct.cchTextMax,sizeof TabTitle1
    22.         invoke SendMessage,hwndTab,TCM_INSERTITEM,0,OFFSET ItemStruct
    23.         MOV ItemStruct.pszText,OFFSET TabTitle2
    24.         MOV ItemStruct.cchTextMax,sizeof TabTitle2
    25.         invoke SendMessage,hwndTab,TCM_INSERTITEM,1,OFFSET ItemStruct
    26.         MOV ItemStruct.pszText,OFFSET TabTitle3
    27.         MOV ItemStruct.cchTextMax,sizeof TabTitle3
    28.         invoke SendMessage,hwndTab,TCM_INSERTITEM,2,OFFSET ItemStruct
    29.         invoke CreateDialogParam,hInst,OFFSET Child1Name,hwndTab,OFFSET ChildDlgProc1,0
    30.         MOV Child1hWnd,eax
    31.         invoke CreateDialogParam,hInst,OFFSET Child2Name,hwndTab,OFFSET ChildDlgProc2,0
    32.         MOV Child2hWnd,eax
    33.         invoke CreateDialogParam,hInst,OFFSET Child3Name,hwndTab,OFFSET ChildDlgProc3,0
    34.         MOV Child3hWnd,eax
    35.        
    36.         invoke LoadIcon,hInst,102
    37.         mov hIcon,eax
    38.        
    39.         MOV WhichTabChosen,0
    40.         invoke ShowWindow,Child1hWnd,SW_SHOWDEFAULT
    41.         .elseif eax == WM_COMMAND
    42.         MOV eax,wParam
    43.         .elseif eax == WM_NOTIFY
    44.         MOV eax,lParam 
    45.         MOV eax, (NMHDR PTR [eax]).code
    46.         .if eax == TCN_SELCHANGE
    47.             MOV eax,WhichTabChosen
    48.             .if eax == 2
    49.                 mov TextOutCY,0
    50.             .endif
    51.             MOV eax,[Handles+eax*4]
    52.             invoke ShowWindow,eax,SW_HIDE
    53.             invoke SendMessage,hwndTab,TCM_GETCURSEL,0,0                                               
    54.             MOV WhichTabChosen,eax
    55.             MOV eax,[Handles+eax*4]
    56.             invoke ShowWindow,eax,SW_SHOWDEFAULT
    57.         .endif
    58.     .else
    59.         mov eax,FALSE
    60.         ret
    61.     .endif         
    62.     mov eax,TRUE
    63.     ret
    64. DlgProc endp


    Где поставить вызов

    invoke LoadIcon,hInst,102

    mov hIcon,eax

    или я вапще неправ ???
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Тут - это где? Что за верхняя иконка?
     
  3. 6aHguT

    6aHguT New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2005
    Сообщения:
    15
    Название забыл, короче иконка приложения которая в левом верхнем углу.

    В ресурсах имеет ID 102
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Это иконка окна/диалога.

    SendMessage(hWnd,WM_SETICON,ICON_SMALL,LoadIcon(hInst,102));



    Можно ещё ту же иконку пустить как ICON_BIG, если окно главное для приложения.
     
  5. 6aHguT

    6aHguT New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2005
    Сообщения:
    15
    Спасибо помогли :)

    Но нужно было вот так



    invoke LoadIcon,hInst,102

    invoke SendMessage ,hWnd,WM_SETICON,ICON_BIG,eax
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    6aHguT

    Рихтер советует использовать ICON_BIG и ICON_SMALL.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ну да, если в иконке есть кадры и с 16х16, и с 32х32, то нужно грузить оба (16х16 для иконки в заголовке окна, 32х32 для иконок что в Alt+Tab). В противном случае винда сама будет пытаться их масштабировать.
     
  8. 6aHguT

    6aHguT New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2005
    Сообщения:
    15


    Как это так ? растянет 16*16 до 32*32 ?