鱼C论坛

 找回密码
 立即注册
查看: 1550|回复: 5

请高手指点迷津!

[复制链接]
发表于 2014-4-7 11:20:47 | 显示全部楼层 |阅读模式
1鱼币
问题请见下面红色字体处:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DisplayMenuItem        proc        _dwCommandID
                        local        @szBuffer[256]:byte

                pushad
                invoke        wsprintf,addr @szBuffer,addr szFormat,_dwCommandID
                invoke        MessageBox,hWinMain,addr @szBuffer,offset szCaption,MB_OK
                popad
                ret

_DisplayMenuItem        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Quit                proc

                invoke        DestroyWindow,hWinMain
                invoke        PostQuitMessage,NULL
                ret

_Quit                endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain        proc        uses ebx edi esi hWnd,uMsg,wParam,lParam
                local        @stPos:POINT
                local        @hSysMenu

                mov        eax,uMsg
                .if        eax ==        WM_CREATE
                        invoke        GetSubMenu,hMenu,1
                        mov        hSubMenu,eax
;********************************************************************
;        在系统菜单中添加菜单项
;********************************************************************
                        invoke        GetSystemMenu,hWnd,FALSE
                        mov        @hSysMenu,eax
                        invoke        AppendMenu,@hSysMenu,MF_SEPARATOR,0,NULL        //为什么这连续三个AppendMenu函数我把它们注释掉以后重新编译后我感觉窗口没什么区别呢?
                        invoke        AppendMenu,@hSysMenu,0,IDM_HELP,offset szMenuHelp
                        invoke        AppendMenu,@hSysMenu,0,IDM_ABOUT,offset szMenuAbout
                       
;********************************************************************
; 处理菜单及加速键消息
;********************************************************************
                .elseif        eax ==        WM_COMMAND
                        invoke        _DisplayMenuItem,wParam
                        mov        eax,wParam
                        movzx        eax,ax
                        .if        eax ==        IDM_EXIT
                                call        _Quit
                        .elseif        eax >=        IDM_TOOLBAR && eax <= IDM_STATUSBAR
                                mov        ebx,eax
                                invoke        GetMenuState,hMenu,ebx,MF_BYCOMMAND
                                .if        eax ==        MF_CHECKED
                                        mov        eax,MF_UNCHECKED
                                .else
                                        mov        eax,MF_CHECKED
                                .endif
                                invoke        CheckMenuItem,hMenu,ebx,eax
                        .elseif        eax >=        IDM_BIG && eax <= IDM_DETAIL
                                invoke        CheckMenuRadioItem,hMenu,IDM_BIG,IDM_DETAIL,eax,MF_BYCOMMAND
                        .endif
;********************************************************************
; 处理系统菜单消息
;********************************************************************
                .elseif        eax == WM_SYSCOMMAND
                        mov        eax,wParam
                        movzx        eax,ax
                        .if        eax == IDM_HELP || eax == IDM_ABOUT
                                invoke        _DisplayMenuItem,wParam
                        .else
                                invoke        DefWindowProc,hWnd,uMsg,wParam,lParam
                                ret
                        .endif
;********************************************************************
; 按下右键时弹出一个POPUP菜单
;********************************************************************
                .elseif eax == WM_RBUTTONDOWN
                        invoke        GetCursorPos,addr @stPos
                        invoke        TrackPopupMenu,hSubMenu,TPM_LEFTALIGN,@stPos.x,@stPos.y,NULL,hWnd,NULL
;********************************************************************
                .elseif        eax ==        WM_CLOSE
                        call        _Quit
;********************************************************************
                .else
                        invoke        DefWindowProc,hWnd,uMsg,wParam,lParam
                        ret
                .endif
;********************************************************************
                xor        eax,eax
                ret

_ProcWinMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WinMain        proc
                local        @stWndClass:WNDCLASSEX
                local        @stMsg:MSG
                local        @hAccelerator

                invoke        GetModuleHandle,NULL
                mov        hInstance,eax
                invoke        LoadMenu,hInstance,IDM_MAIN
                mov        hMenu,eax
                invoke        LoadAccelerators,hInstance,IDA_MAIN
                mov        @hAccelerator,eax
;********************************************************************
; 注册窗口类
;********************************************************************
                invoke        RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
                invoke        LoadIcon,hInstance,ICO_MAIN
                mov        @stWndClass.hIcon,eax
                mov        @stWndClass.hIconSm,eax
                invoke        LoadCursor,0,IDC_ARROW
                mov        @stWndClass.hCursor,eax
                push        hInstance
                pop        @stWndClass.hInstance
                mov        @stWndClass.cbSize,sizeof WNDCLASSEX
                mov        @stWndClass.style,CS_HREDRAW or CS_VREDRAW
                mov        @stWndClass.lpfnWndProc,offset _ProcWinMain
                mov        @stWndClass.hbrBackground,COLOR_WINDOW + 1
                mov        @stWndClass.lpszClassName,offset szClassName
                invoke        RegisterClassEx,addr @stWndClass
;********************************************************************
; 建立并显示窗口
;********************************************************************
                invoke        CreateWindowEx,WS_EX_CLIENTEDGE,\
                        offset szClassName,offset szCaptionMain,\
                        WS_OVERLAPPEDWINDOW,\
                        100,100,400,300,\
                        NULL,hMenu,hInstance,NULL
                mov        hWinMain,eax
                invoke        ShowWindow,hWinMain,SW_SHOWNORMAL
                invoke        UpdateWindow,hWinMain
;********************************************************************
; 消息循环
;********************************************************************
                .while        TRUE
                        invoke        GetMessage,addr @stMsg,NULL,0,0
                        .break        .if eax        == 0
                        invoke        TranslateAccelerator,hWinMain,@hAccelerator,addr @stMsg
                        .if        eax == 0
                                invoke        TranslateMessage,addr @stMsg
                                invoke        DispatchMessage,addr @stMsg
                        .endif
                .endw
                ret

_WinMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
                call        _WinMain
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        start

最佳答案

查看完整内容

没有区别就没有区别呗。。。。管那么多做啥。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-7 11:20:48 | 显示全部楼层
没有区别就没有区别呗。。。。管那么多做啥。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-7 15:42:49 | 显示全部楼层
你可以找下菜单项是不是多了关于和帮助这两项

评分

参与人数 1鱼币 +5 贡献 +3 收起 理由
隨鈊乄鎍慾 + 5 + 3 感谢!我已经找到什么原因了!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-7 19:32:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-7 19:50:21 | 显示全部楼层
向往青莲 发表于 2014-4-7 14:50
没有区别就没有区别呗。。。。管那么多做啥。。。

感谢你对我提出问题的关注
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-7 19:55:46 | 显示全部楼层
福禄娃娃 发表于 2014-4-7 15:42
你可以找下菜单项是不是多了关于和帮助这两项

不客气,没有能帮到你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-30 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表