Подумайте, сколько ценной информации хранится на вашем компьютере – начиная с достаточно безобидных сведений о вас и вашей работе и заканчивая действительно конфиденциальными данными (пароли к кредитным картам, финансовые документы, личная переписка и т. д.). А теперь представьте, что ваш компьютер взломали и вся зга информация стала доступна посторонним людям. Или злобный вирус уничтожил половину содержимого жесткого диска, и вы потеряли готовый проект, который необходимо сдавать через два дня. Представили? Понравилось? Самое страшное, что эти случаи – вовсе не фантастика. Достаточно пару раз пренебречь несложными правилами компьютерной безопасности – и злоумышленнику не составит никакого труда получить доступ ко всей вашей информации, а вирусы будут плодиться на вашем компьютере один за другим. Согласитесь, вам есть что терять – и есть что защищать. Именно для тех, кто желает защитить свой компьютер и себя от неприятных сюрпризов, и написана эта книга. С ее помощью вы научитесь защищаться от вирусов и прочих вредоносных программ, распознавать и отражать хакерские атаки, уловки интернет-мошенников, контролировать доступ к тем ресурсам, которые не должен посещать ваш ребенок. |
Спроси маму: Как общаться с клиентами и подтвердить правоту своей бизнес-идеи, если все кругом врут? Стив Бланк, гуру стартап-движения, говорит, что главное для начинающего предпринимателя – это «выйти из офиса», то есть начать напрямую узнавать у клиентов, что им нужно. Однако получите ли вы действительно важную информацию, зависит от того, какие вопросы вы будете задавать. Кстати, самый популярный вопрос – «Нравится ли вам наша идея или продукт»? – неверен. Это все равно, что спрашивать маму, по душе ли ей ваша идея: она любит вас и в любом случае похвалит, не желая расстраивать. Так же поступают и 99 % клиентов. В общем, чтобы быть успешным предпринимателем, надо знать, как и что именно спрашивать, и по книге Роба Фитцпатрика вы научитесь это делать! Автор поможет вам понять, когда ответ дается из вежливости и не несет никакой ценности, подскажет, в каком направлении следует развивать беседу, какие уточняющие вопросы задавать, как избегать социально желаемых ответов, как понять, что в продукте хорошо или плохо, нужен ли он рынку, как его правильно позиционировать – и все это со множеством реальных примеров. Перед вами краткое, полезное и написанное с хорошим юмором практическое руководство по эффективному общению предпринимателя с клиентами. Оно поможет вам сэкономить время, деньги и нервы. |
Меню можно создать динамически, без создания ресурса.
Программа 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 endswVersion - версия шаблона, должна быть равна 1.
typedef struct { DWORD dwType; DWORD dwState; UINT uId; WORD bResInfo; WCHAR szText[1]; // DWORD dwHelpId; } MENUEX_TEMPLATE_ITEM;dwType - тип пункта меню.
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