首页
社区
课程
招聘
[求助]如何在对话框里显示一张bmp图片?
发表于: 2007-6-14 15:39 8388

[求助]如何在对话框里显示一张bmp图片?

2007-6-14 15:39
8388
如何在对话框里显示一张bmp图片?比如我有两张图片,C:\1.BMP,C:\2.BMP

然后我通过选择路径,先把1显示在对话框上,然后在显示2...就类似于图片查看器那种

我记得有个MFC的类叫 "m_Pic.SetBitmap"来着,可以显示一张图片的,但是我对MFC不感冒呀,不

想去学已经封装的东西,所以各位大大给个思路.............

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
CODE:
        CBitmap bitmap;
        bitmap.LoadBitmap(IDB_BITMAP1);

        BITMAP bmp;
        bitmap.GetBitmap(&bmp);

        CDC dcCompatible;
        dcCompatible.CreateCompatibleDC(pDC);

        dcCompatible.SelectObject(&bitmap);

        CRect rect;
        GetDlgItem(ID号)->GetWindowRect(&rect);
        pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
                0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);

ps:不知道有没有写错 哈哈
2007-6-14 17:20
0
雪    币: 297
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
GDI+撒。

void Draw(HDC hdc, LPCWSTR file)
{
Graphics g(hdc);
Bitmap bmp(file);
g.DrawImage(&bmp, 0, 0);
}
2007-6-14 19:13
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
4
2楼,你给的代码不怎么懂看..........
2007-6-14 19:21
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
5


貌似C木这样的代码........
2007-6-14 19:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
俺发的是MFC的 3 楼的可能是C的吧
2007-6-15 12:57
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
7


能用C或者汇编写一下吗?
2007-6-15 21:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
int cx=1024, cy=768;
LPCTSTR lpszBmpFile="F:\\123.bmp";

HBITMAP bitmap=(HBITMAP)::LoadImage(NULL, lpszBmpFile, IMAGE_BITMAP, cx, cy, LR_LOADFROMFILE);

HDC hdcMem=CreateCompatibleDC(NULL);
SelectObject(hdcMem, bitmap);
DeleteObject(bitmap);
       
HDC hdc=::GetDC(m_hWnd);
BitBlt(hdc, 0, 0, cx, cy, hdcMem, 0, 0, SRCCOPY);
DeleteDC(hdc);
2007-6-15 23:39
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
9
貌似不行,测试代码:

.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
include     gdi32.inc
includelib  gdi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        equ                1000h        ;图标
DLG_MAIN        equ                1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance        dd                ?
bitmap dd ?
hdcMem dd ?
hdc    dd ?
.data
lpszBmpFile db "logo1.bmp",0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain        proc        uses ebx edi esi hWnd,wMsg,wParam,lParam
                mov        eax,wMsg
                .if        eax == WM_CLOSE
                        invoke        EndDialog,hWnd,NULL
                .elseif        eax == WM_INITDIALOG
                        invoke        LoadIcon,hInstance,ICO_MAIN
                        invoke        SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
                       
                        invoke LoadImage,NULL,addr lpszBmpFile, IMAGE_BITMAP,1024,768, LR_LOADFROMFILE
         invoke CreateCompatibleDC,NULL
         mov hdcMem,eax
         invoke SelectObject,hdcMem,bitmap
         invoke DeleteObject,bitmap
         invoke GetDC,hWnd
         mov hdc,eax
         invoke BitBlt,hdc, 0, 0,1024,768, hdcMem, 0, 0, SRCCOPY
         invoke DeleteDC,hdc
                .elseif        eax == WM_COMMAND
                        mov        eax,wParam
                        .if        ax == IDOK
         mov eax,FALSE
                        .endif
                .else
                        mov        eax,FALSE
                        ret
                .endif
                mov        eax,TRUE
                ret

_ProcDlgMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
                invoke        GetModuleHandle,NULL
                mov        hInstance,eax
                invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        start

RC

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include                <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define        ICO_MAIN                0x1000        //图标
#define        DLG_MAIN                1
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        ICON                "Main.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 50, 50, 252, 184
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "对话框模板"
FONT 9, "宋体"
{
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2007-6-16 00:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
初始问题!  WM_INITDIALOG 还做不出图
在WM_PAINT画
2007-6-16 00:47
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
11
WM_PAINT?不太明白哦
2007-6-16 14:46
0
雪    币: 1259
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stu
12
新手,测试通过,代码片段:
    local  @stPs:PAINTSTRUCT
    local  @stRect:RECT
    local  @hDc
    LOCAL  hImage
    LOCAL  hMem

    mov  eax,uMsg
;********************************************************************289 125
    .if  eax ==  WM_PAINT
      invoke  BeginPaint,hWnd,addr @stPs
      mov  @hDc,eax
      invoke  GetClientRect,hWnd,addr @stRect
      
      invoke  CreateCompatibleDC,NULL
      mov  hMem,eax
      invoke  LoadImage,NULL,offset szFileName,IMAGE_BITMAP,471,331,LR_LOADFROMFILE
      mov  hImage,eax
      invoke  SelectObject,hMem,hImage
      invoke  DeleteObject,hImage
      invoke  StretchBlt,@hDc,0,0,@stRect.right,@stRect.bottom,hMem,0,0,471,331,SRCCOPY      
      
      invoke  DrawText,@hDc,addr szText,-1,\
        addr @stRect,\
        DT_SINGLELINE or DT_CENTER or DT_VCENTER

      invoke  EndPaint,hWnd,addr @stPs
2007-6-17 19:15
0
游客
登录 | 注册 方可回帖
返回
//