Новые книги

За последние несколько лет нейрофизиологи сделали множество важных открытий, касающихся человеческого мозга и способных существенно облегчить задачу межличностного взаимодействия. В этой книге специалист по когнитивной нейробиологии Дона Маркова и ее коллега Энджи Макартур рассказывают о различных типах мышления и моделях восприятия, способах оперативной суперконцентрации и быстрого переключения внимания на поставленные задачи, выстраивают алгоритм эффективных коммуникаций отдельных личностей в команде. Рисунки, таблицы, тестовые задания и диаграммы превосходно иллюстрируют материал и помогают усвоить и применить на практике методику авторов.
E-mail маркетинг успешно помогает интернет-магазинам извлекать прибыль из наработанной клиентской базы. И если вы не хотите оплачивать услуги профессиональных агентств, а намерены развивать e-mail маркетинг своими силами, эта книга для вас. Она содержит четкую модель для малых и средних интернет-магазинов с учетом их реалий: неготовности вкладывать большие средства на старте, нехватки ресурсов, отсутствия качественного контента, а также необходимости получать немедленную, ясно прослеживаемую финансовую отдачу от инструмента.

Читайте, внедряйте и умножайте прибыль!

Меню можно добавить в процессе создания окна, использовав при этом аргумент hMenu - дискриптор меню. Его возращает функция LoadMenu.

==>Begin cr_menu2.asm<==
.386
.model flat, stdcall
include win32.inc

extrn            CreateWindowExA:PROC
extrn            DefWindowProcA:PROC
extrn            DispatchMessageA:PROC
extrn            ExitProcess:PROC
extrn            GetMessageA:PROC
extrn            GetModuleHandleA:PROC
extrn            LoadCursorA:PROC
extrn            LoadIconA:PROC
extrn            LoadMenuA:PROC
extrn            MessageBoxA:PROC
extrn            PostQuitMessage:PROC
extrn            RegisterClassA:PROC
extrn            ShowWindow:PROC
extrn            TranslateMessage:PROC
extrn            UpdateWindow:PROC


IDM_1     EQU 1
IDM_2     EQU 2
IDM_EXIT  EQU 3
IDM_ABOUT EQU 4

.data

newhwnd          dd 0
hMenu            dd ?
msg              MSGSTRUCT   
wc               WNDCLASS    

hInst            dd 0

szMenuName       db 'MENU_1', 0
szTitleName      db 'Win32 Assembly Program', 0
szClassName      db 'ASMCLASS32',0
mb_message       db 'Win32 Assembler: Menu',0
mb_title         db 'About',0

.code
;-----------------------------------------------------------------------------
start:

        push    0
        call    GetModuleHandleA        ; get hmod (in eax)
        mov     [hInst], eax            ; hInstance is same as HMODULE
                                        ; in the Win32 world
; initialize the WndClass structure
        mov     [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
        mov     [wc.clsLpfnWndProc], offset WndProc
        mov     [wc.clsCbClsExtra], 0
        mov     [wc.clsCbWndExtra], 0

        mov     eax, [hInst]
        mov     [wc.clsHInstance], eax

        push    IDI_APPLICATION
        push    0
        call    LoadIconA
        mov     [wc.clsHIcon], eax

        push    IDC_ARROW
        push    0
        call    LoadCursorA
        mov     [wc.clsHCursor], eax

        push    offset szMenuName
        push    [hInst]
        call    LoadMenuA
        mov     [hMenu], eax

        mov     [wc.clsHbrBackground], COLOR_WINDOW + 1
        mov     dword ptr [wc.clsLpszMenuName], 0
        mov     dword ptr [wc.clsLpszClassName], offset szClassName

        push    offset wc
        call    RegisterClassA

        push    0                        ; lpParam
        push    [hInst]                  ; hInstance
        push    [hMenu]                  ; menu
        push    0                        ; parent hwnd
        push    CW_USEDEFAULT            ; height
        push    CW_USEDEFAULT            ; width
        push    CW_USEDEFAULT            ; y
        push    CW_USEDEFAULT            ; x
        push    WS_OVERLAPPEDWINDOW      ; Style
        push    offset szTitleName       ; Title string
        push    offset szClassName       ; Class name
        push    0                        ; extra style

        call    CreateWindowExA

        mov     [newhwnd], eax

        push    SW_SHOWNORMAL
        push    [newhwnd]
        call    ShowWindow

        push    [newhwnd]
        call    UpdateWindow

msg_loop:
        push    0
        push    0
        push    0
        push    offset msg
        call    GetMessageA

        cmp     ax, 0
        je      end_loop

        push    offset msg
        call    TranslateMessage

        push    offset msg
        call    DispatchMessageA

        jmp     msg_loop

end_loop:
        push    [msg.msWPARAM]
        call    ExitProcess


;-----------------------------------------------------------------------------
WndProc          proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\
                 wparam:DWORD, lparam:DWORD

        cmp     [wmsg], WM_DESTROY
        je      wmdestroy
        cmp     [wmsg], WM_COMMAND
        je      wmcommand

        push    [lparam]
        push    [wparam]
        push    [wmsg]
        push    [hwnd]
        call    DefWindowProcA
        jmp     finish

wmdestroy:
        push    0
        call    PostQuitMessage
        mov     eax, 0
        jmp     finish

wmcommand:
        mov     eax, [wparam]
        cmp     eax, IDM_ABOUT
        jne     wmnext
        push   0
        push   offset mb_title
        push   offset mb_message
        push   0
        call   MessageBoxA
wmnext:
        cmp     eax, IDM_EXIT
        je      wmdestroy

finish:
        ret
WndProc          endp
ends
end start
==>End of cr_menu2.asm<==
Текст программы: cr_menu2.zip