首页
社区
课程
招聘
[求助]窗口中无法显示位图
发表于: 2007-3-5 21:36 4275

[求助]窗口中无法显示位图

2007-3-5 21:36
4275
.386
.model flat,stdcall
option casemap:none

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

include windows.inc
include user32.inc
include kernel32.inc
include gdi32.inc
includelib user32.lib
includelib kernel32.lib
includelib gdi32.lib

.const
IDB_MAIN equ 1

.data
ClassName db "SimpleWin"
AppName db "SimpleWin"

.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
hBitmap dd ?

.code
start:
      invoke GetModuleHandle,NULL
      mov hInstance,eax
      invoke GetCommandLine
      mov CommandLine,eax
      invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
      invoke ExitProcess,eax
      
      WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
      LOCAL wc:WNDCLASSEX
      LOCAL msg:MSG
      LOCAL hwnd:HWND
      mov wc.cbSize,sizeof WNDCLASSEX
      mov wc.style,CS_HREDRAW OR CS_VREDRAW
      mov wc.lpfnWndProc,offset WndProc
      mov wc.cbClsExtra,NULL
      mov wc.cbWndExtra,NULL
      push hInst
      pop wc.hInstance
      invoke LoadIcon,NULL,IDI_APPLICATION
      mov wc.hIcon,eax
      mov wc.hIconSm,eax
      invoke LoadCursor,NULL,IDC_ARROW
      mov wc.hCursor,eax
      mov wc.hbrBackground,COLOR_WINDOW+1
      mov wc.lpszMenuName,NULL
      mov wc.lpszClassName,offset ClassName
      invoke RegisterClassEx,addr wc
      invoke CreateWindowEx,WS_EX_CLIENTEDGE,addr ClassName,addr AppName,WS_OVERLAPPEDWINDOW or WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst,NULL
      mov hwnd,eax
      .while TRUE
              invoke GetMessage,addr msg,NULL,0,0
              .break .if(!eax)
                      invoke TranslateMessage,addr msg
                      invoke DispatchMessage,addr msg
             
      .endw
      mov eax,msg.wParam
      ret
      WinMain endp
      
      WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
             
              LOCAL ps:PAINTSTRUCT
              LOCAL rect:RECT
              LOCAL hMem:HDC
              LOCAL hdc:HDC
              .if uMsg==WM_CREATE
                      invoke LoadBitmap,hInstance,IDB_MAIN
                      mov hBitmap,eax
              .elseif uMsg==WM_PAINT
                      invoke BeginPaint,hWnd,addr ps
                      mov hdc,eax
                      invoke CreateCompatibleDC,hdc
                      mov hMem,eax
                      invoke SelectObject,hMem,hBitmap
                      invoke GetClientRect,hWnd,addr rect
                      invoke BitBlt,hdc,0,0,rect.right,rect.bottom,hMem,0,0,SRCCOPY
                      invoke DeleteObject,hMem
                      invoke EndPaint,hWnd,addr ps       
              .elseif uMsg==WM_DESTROY
                      invoke DeleteObject,hBitmap
                      invoke PostQuitMessage,NULL
              .else
                      invoke DefWindowProc,hWnd,uMsg,wParam,lParam
                      ret               
              .endif
              xor eax,eax
              ret

      WndProc endp
      end start

资源文件的代码是:
#define IDB_MAIN 1
IDB_MAIN BITMAP DISCARDABLE "1.bmp"

请高手指出什么地方除了问题????????

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 289
活跃值: (236)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
2
你看看你的文件路径设置是否正确,就是
IDB_MAIN BITMAP DISCARDABLE "1.bmp"
有没有问题!程序应该没有什么问题!
2007-3-5 22:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我用的资源编辑软件弄得,文件路径应该没什么问题
2007-3-6 21:36
0
雪    币: 14959
活跃值: (4743)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
资源文件重新编译下试试.曾经碰到过类似的问题.重新编译资源就OK了.
2007-3-7 01:12
0
游客
登录 | 注册 方可回帖
返回
//