属専色灰 发表于 2013-5-30 02:05:55

用RadASM编译win32程序,我想加一个图标,为何没有反应!

本帖最后由 属専色灰 于 2013-6-17 22:23 编辑

为何我应用程序的左上角木有图标??还有,就算我把这个大头的脸图标从工程目录移除,可是编译出来的程序他还是大头的脸

asm代码如下:

                .386
                .model      flat,stdcall
                optioncasemap:none
               
include                windows.inc
include                user32.inc
includelib      user32.lib
include                kernel32.inc
includelib      kernel32.lib


ICO_BIG                equ                1000h

                .data?
hInstance      dd      ?
hWinMain      dd      ?
hIcoBig                dd      ?



;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .const
szClassName      db      'Icon and Cursor Example',0
szCursorFile      db      '1.ani',0
                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Quit                proc

                invoke      DestroyWindow,hWinMain
                invoke      PostQuitMessage,NULL
                ret

_Quit                endp
_ProcWinMain      proc      uses ebx edi esi hWnd,uMsg,wParam,lParam

                mov      eax,uMsg
;********************************************************************
                .if      eax ==      WM_CREATE
                        invoke      LoadIcon,hInstance,ICO_BIG      
                        mov      hIcoBig,eax
                ;      invoke      SendMessage,hWnd,WM_COMMAND,ICO_BIG,NULL
                        invoke      SendMessage,hWnd,WM_SETICON,ICO_BIG,hIcoBig
                        
                .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

                invoke      GetModuleHandle,NULL
                mov      hInstance,eax
               
;********************************************************************
; 注册窗口类
;********************************************************************
                invoke      RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
                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 szClassName,\
                        WS_OVERLAPPEDWINDOW,\
                        100,100,400,300,\
                        NULL,NULL,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      TranslateMessage,addr @stMsg
                        invoke      DispatchMessage,addr @stMsg
                .endw
                ret

_WinMain      endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
                call      _WinMain
                invoke      ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end      start
rc代码如下:



#define ICO_BIG 4096
ICO_BIG ICON DISCARDABLE "Big.ico"ID看错了!不好意思


是不是我的RC代码写错了,还是哪里有问题??

bafengao 发表于 2013-5-30 06:12:18

强烈支持楼主ing……

b512618 发表于 2013-7-27 19:06:52

invoke      LoadIcon,hInstance,ICO_BIG      

42.                        mov      hIcoBig,eax

43.                ;      invoke      SendMessage,hWnd,WM_COMMAND,ICO_BIG,NULL

44.                        invoke      SendMessage,hWnd,WM_SETICON,ICO_BIG,hIcoBi
改成:
invokeLoadIcon,hInstance,ICO_BIG
invokeSendMessage,hWnd,WM_SETICON,ICON_BIG,eax

tjusyj 发表于 2013-8-28 13:24:35

哈哈~ID不一样~
页: [1]
查看完整版本: 用RadASM编译win32程序,我想加一个图标,为何没有反应!