Поиск:

Ответ в темуСоздание новой темы Создание опроса
> иконка в alt+tab 
V
    Опции темы
piritus
Дата 1.3.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Как сделать так, что бы в окне alt+tab отображалась иконка моей программы?
(отображается обычная IDI_APLICATION)
--------------------
PM MAIL ICQ   Вверх
Ant
Дата 2.3.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Ты должен подгрузить в ресурсах к своей программе свою иконку и использовать ее при регистрации класса.

Добавлено @ 08:45 
Код


; Simple text editor - fasm example program

format PE GUI 4.0
entry start

include 'win32a.inc'

IDM_NEW   = 101
IDM_EXIT  = 102
IDM_ABOUT = 901

section '.data' data readable writeable

  _class TCHAR 'MINIPAD32',0
  _edit TCHAR 'EDIT',0

  _title TCHAR 'MiniPad',0
  _about_title TCHAR 'About MiniPad',0
  _about_text TCHAR 'This is Win32 example program created with flat assembler.',0
  _error TCHAR 'Startup failed.',0

  wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class

  edithwnd dd ?
  editfont dd ?

  msg MSG
  client RECT

section '.code' code readable executable

  start:

    invoke    GetModuleHandle,0
    mov    [wc.hInstance],eax
    invoke    LoadIcon,eax,17 ; ЗАГРУЗКА ИКОНКИ ИЗ ФАЙЛА
    mov    [wc.hIcon],eax    ; ЗАПИСЬ УКАЗАТЕЛЯ НА ИКОНКУ В структуру класса для данного окна
    invoke    LoadCursor,0,IDC_ARROW
    mov    [wc.hCursor],eax
    invoke    RegisterClass,wc
    test    eax,eax
    jz    error

    invoke    LoadMenu,[wc.hInstance],37
    invoke    CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW,144,128,256,256,NULL,eax,[wc.hInstance],NULL
    test    eax,eax
    jz    error

  msg_loop:
    invoke    GetMessage,msg,NULL,0,0
    cmp    eax,1
    jb    end_loop
    jne    msg_loop
    invoke    TranslateMessage,msg
    invoke    DispatchMessage,msg
    jmp    msg_loop

  error:
    invoke    MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK

  end_loop:
    invoke    ExitProcess,[msg.wParam]

proc WindowProc hwnd,wmsg,wparam,lparam
    push    ebx esi edi
    cmp    [wmsg],WM_CREATE
    je    .wmcreate
    cmp    [wmsg],WM_SIZE
    je    .wmsize
    cmp    [wmsg],WM_SETFOCUS
    je    .wmsetfocus
    cmp    [wmsg],WM_COMMAND
    je    .wmcommand
    cmp    [wmsg],WM_DESTROY
    je    .wmdestroy
  .defwndproc:
    invoke    DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
    jmp    .finish
  .wmcreate:
    invoke    GetClientRect,[hwnd],client
    invoke    CreateWindowEx,WS_EX_CLIENTEDGE,_edit,0,WS_VISIBLE+WS_CHILD+WS_HSCROLL+WS_VSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE,[client.left],[client.top],[client.right],[client.bottom],[hwnd],0,[wc.hInstance],NULL
    or    eax,eax
    jz    .failed
    mov    [edithwnd],eax
    invoke    CreateFont,16,0,0,0,0,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_RASTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH+FF_DONTCARE,NULL
    or    eax,eax
    jz    .failed
    mov    [editfont],eax
    invoke    SendMessage,[edithwnd],WM_SETFONT,eax,FALSE
    xor    eax,eax
    jmp    .finish
      .failed:
    or    eax,-1
    jmp    .finish
  .wmsize:
    invoke    GetClientRect,[hwnd],client
    invoke    MoveWindow,[edithwnd],[client.left],[client.top],[client.right],[client.bottom],TRUE
    xor    eax,eax
    jmp    .finish
  .wmsetfocus:
    invoke    SetFocus,[edithwnd]
    xor    eax,eax
    jmp    .finish
  .wmcommand:
    mov    eax,[wparam]
    and    eax,0FFFFh
    cmp    eax,IDM_NEW
    je    .new
    cmp    eax,IDM_ABOUT
    je    .about
    cmp    eax,IDM_EXIT
    je    .wmdestroy
    jmp    .defwndproc
      .new:
    invoke    SendMessage,[edithwnd],WM_SETTEXT,0,0
    jmp    .finish
      .about:
    invoke    MessageBox,[hwnd],_about_text,_about_title,MB_OK
    jmp    .finish
  .wmdestroy:
    invoke    DeleteObject,[editfont]
    invoke    PostQuitMessage,0
    xor    eax,eax
  .finish:
    pop    edi esi ebx
    ret
endp

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
      user,'USER32.DLL',\
      gdi,'GDI32.DLL'

  import kernel,\
     GetModuleHandle,'GetModuleHandleA',\
     ExitProcess,'ExitProcess'

  import user,\
     RegisterClass,'RegisterClassA',\
     CreateWindowEx,'CreateWindowExA',\
     DefWindowProc,'DefWindowProcA',\
     SetWindowLong,'SetWindowLongA',\
     RedrawWindow,'RedrawWindow',\
     GetMessage,'GetMessageA',\
     TranslateMessage,'TranslateMessage',\
     DispatchMessage,'DispatchMessageA',\
     SendMessage,'SendMessageA',\
     LoadCursor,'LoadCursorA',\
     LoadIcon,'LoadIconA',\
     LoadMenu,'LoadMenuA',\
     GetClientRect,'GetClientRect',\
     MoveWindow,'MoveWindow',\
     SetFocus,'SetFocus',\
     MessageBox,'MessageBoxA',\
     PostQuitMessage,'PostQuitMessage'

  import gdi,\
     CreateFont,'CreateFontA',\
     DeleteObject,'DeleteObject'

section '.rsrc' resource data readable

  ; resource directory

  directory RT_MENU,menus,\
        RT_ICON,icons,\
        RT_GROUP_ICON,group_icons,\
        RT_VERSION,versions

  ; resource subdirectories

  resource menus,\
       37,LANG_ENGLISH+SUBLANG_DEFAULT,main_menu

  resource icons,\
       1,LANG_NEUTRAL,icon_data    ; ОБЪЯВЛЕНИЕ УКАЗАТЕЛЯ НА ИКОНКУ

  resource group_icons,\
       17,LANG_NEUTRAL,main_icon

  resource versions,\
       1,LANG_NEUTRAL,version

  menu main_menu
       menuitem '&File',0,MFR_POPUP
        menuitem '&New',IDM_NEW
        menuseparator
        menuitem 'E&xit',IDM_EXIT,MFR_END
       menuitem '&Help',0,MFR_POPUP + MFR_END
        menuitem '&About...',IDM_ABOUT,MFR_END

  icon main_icon,icon_data,'minipad.ico'      ; ВОТ УКАЗАТЕЛЬ В СЕКЦИИ РЕСУРСОВ НА ФАИЛ ИКОНКИ 

  versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
          'FileDescription','MiniPad - example program',\
          'LegalCopyright','No rights reserved.',\
          'FileVersion','1.0',\
          'ProductVersion','1.0',\
          'OriginalFilename','MINIPAD.EXE'



Это сообщение отредактировал(а) Ant - 2.3.2007, 08:53
PM MAIL   Вверх
piritus
Дата 2.3.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



я наверное был не точен при описании проблемы...
иконка моей программы отображается и на ехе-шнике и в панели задач, но
она не отображается при на жатии комбинации клавиш alt+tab

Но, возможно проблема в том, что у меня не простое окно, а диалоговое
и иконку я устанавливаю при его инициализации:

Код

invoke LoadIcon,hInstance,IDI_ICON1
invoke SendMessage,hDlg,WM_SETICON,0,eax



--------------------
PM MAIL ICQ   Вверх
Ant
Дата 3.3.2007, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



piritus, да, дело в этом

PM MAIL   Вверх
piritus
Дата 3.3.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



а такое возможно реализовать для диалогового окна?
--------------------
PM MAIL ICQ   Вверх
Ant
Дата 3.3.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 3.9.2006

Репутация: нет
Всего: нет



Должно быть, только, если родительское "обычное" окно будет содержать эту иконку.
PM MAIL   Вверх
586
Дата 3.3.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



http://msdn2.microsoft.com/en-us/library/ms632643.aspx
Цитата
wParam
   Specifies the type of icon to be set. This parameter can be one of the following values. 
   ICON_BIG
      Set the large icon for the window.
   ICON_SMALL
      Set the small icon for the window.

И не имеет значения, диалоговое окно, или обычное.
PM   Вверх
piritus
Дата 3.3.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



благодарю, все получилось
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.