Новые книги

Реальность, с которой все мы сталкиваемся, – это созданные словно по шаблону сайты компаний, интернет-магазины, информационные порталы… Однообразие не лучший инструмент для привлечения клиентов. Эмоции продают!

Чтобы сайт притягивал клиентов, оказывается, достаточно сделать так, чтобы его вид вызывал положительные эмоции. Удовольствие, удивление в сочетании с неповторимым стилем – вот основы эмоционального дизайна.

Освоить его азы и предлагает эта книга. На ее страницах вы найдете подробное описание новых механизмов взаимодействия с вашей аудиторией, а также практические рекомендации, как завоевать сердца клиентов.
Рассказывается о работе в операционной системе Windows (на примере версий XP и 7), текстовом редакторе Word 2010 и других приложениях, необходимых каждому пользователю: архиваторах, антивирусах и программах для просмотра видео и прослушивания музыки (Winamp, QuickTime Pro). Большое внимание уделяется работе в Интернете. Рассказывается о программах для просмотра Web-страниц, об электронной почте, а также о различных полезных приложениях для работы в сети — менеджерах закачек файлов, ICQ, Windows Live Messenger, MSN и многих других. Во втором издании рассмотрена новая ОС — Windows 7, а также последние версии приложений для пользователей.

Для начинающих пользователей ПК.

Меню можно создать динамически, без создания ресурса.
Программа cr_menu3.asm имеет в памяти шаблон меню, потом из шаблона создаст "объект" меню с помощью LoadMenuIndirect, которая вернет дискриптор меню. Меню может затем быть добавлено при создании окна, устанавливая дискриптор меню в соответствующий аргумент CreateWindowEx.

Вы можете также создать окно без меню и потом дополнить используя SetMenu.
Эта функция API может также использоваться для изменения меню. Меню могут удалить используя NULL вместо дискриптора меню.

        push    offset MenuTemplate ;шаблон меню
        call    LoadMenuIndirectA
        mov     [hMenu], eax        ;hMenu - menu handle
Шаблон меню состоит из заголовка и списка пунктов меню.
MENUEX_TEMPLATE_HEADER struct
    wVersion       dw ?
    wOffset        dw ?
    dwHelpId       dd ?
MENUEX_TEMPLATE_HEADER ends
wVersion - версия шаблона, должна быть равна 1.
wOffset - смещение относительно конца этого поля. Если первое определение пункта меню следует за dwHelpId, то wOffset должен быть 4.
dwHelpId - идентификатор подсказки.

Заголовок должен выравниваться по DWORD границе.
Пункт меню:
 typedef struct {
     DWORD  dwType;
     DWORD  dwState;
     UINT   uId;
     WORD   bResInfo;
     WCHAR  szText[1];
     // DWORD dwHelpId;
 } MENUEX_TEMPLATE_ITEM;
dwType - тип пункта меню.
dwState - состояние пункта меню.
UINT - уникальный идентификатор.
bResInfo - величина введенная для обозначения последнего пункта меню, подменю...
szText - текст пункта меню. Это Unicode строка оканчивающаяся 0, выравнивается по WORD границе.
dwHelpId - идентификатор подсказки. Нужен только при создании POPUP меню.

Пример:
MenuTemplate      MENUEX_TEMPLATE_HEADER<1,4,0>

                  ; &File
                  dd MFT_STRING  ;     Type
                  dd MFS_ENABLED ;     State
                  dd 0           ;     Id
                  dw MFR_POPUP   ;     ResInfo
                  dw '&','F','i','l','e',0,0   ;     Text
                  dd 0           ;     HelpId

                  ; MenuItem &GRAYED
                  dd MFT_STRING  ;     Type
                  dd MFS_GRAYED  ;     State
                  dd IDM_1       ;     Id
                  dw 0           ;     ResInfo
                  dw 'M','e','n','u','I','t','e','m',' '   ; Text
                  dw '&','G','R','A','Y','E','D',0
                  ; dd 0 - HelpId only with popup menu

                  ; MenuItem &DISABLED
                  dd MFT_STRING  ;     Type
                  dd MF_DISABLED ;     State
                  dd IDM_2       ;     Id
                  dw 0           ;     ResInfo
                  dw 'M','e','n','u','I','t','e','m',' '   ; Text
                  dw '&','D','I','S','A','B','L','E','D',0
                  ; dd 0         ;     HelpId

                  ; ------------------
                  dd MFT_SEPARATOR,0,0
                  dw 0,0

                  ; E&xit
                  dd MFT_STRING  ;     Type
                  dd MFS_ENABLED ;     State
                  dd IDM_EXIT    ;     Id
                  dw MFR_END     ;     ResInfo
                  dw 'E','&','x','i','t',0,0    ; Text
                  ; dd 0         ;     HelpId

                  ; &About
                  dd MFT_STRING  ;     Type
                  dd MFS_ENABLED ;     State
                  dd IDM_ABOUT   ;     Id
                  dw MFR_END     ;     ResInfo
                  dw '&','A','b','o','u','t',0    ; Text
                  ;  dd 0        ;     HelpId


Полный текст: cr_menu3.zip