我使用vc6.0 的 Win32 Application 编写一个win32程序,我需要使用 在 视图区 使用 左键单击,然后回加载一个外部的bmp或者jpg的文件,我如何加载,并显示出来,我试了很久,都没有显示出来!下面是我的代码,请指教!
//
HDC DC, memDC;
HBITMAP bitmap;
//
switch (message)
{
case WM_LBUTTONDOWN:
DC = GetDC(hWnd);
memDC = CreateCompatibleDC(DC);
bitmap = (HBITMAP)LoadImage(NULL,"D:\\ff.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
SelectObject(memDC,bitmap);
BitBlt(DC, LOWORD(lParam), HIWORD(wParam), 64,64, memDC, 0,0, SRCCOPY);
ReleaseDC(hWnd, DC);
DeleteDC(memDC);
break;
。。
}
我debug了一下,这个bmp文件是被成功的加载了,但是就是不能成功的显示出来,这是为什么啊??
//
HDC DC, memDC;
HBITMAP bitmap;
//
switch (message)
{
case WM_LBUTTONDOWN:
DC = GetDC(hWnd);
memDC = CreateCompatibleDC(DC);
bitmap = (HBITMAP)LoadImage(NULL,"D:\\ff.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
SelectObject(memDC,bitmap);
BitBlt(DC, LOWORD(lParam), HIWORD(wParam), 64,64, memDC, 0,0, SRCCOPY);
ReleaseDC(hWnd, DC);
DeleteDC(memDC);
break;
。。
}
我debug了一下,这个bmp文件是被成功的加载了,但是就是不能成功的显示出来,这是为什么啊??
代码如下:
case WM_LBUTTONDOWN:
DC = GetDC(hWnd);
memDC = CreateCompatibleDC(DC);
bitmap = (HBITMAP)LoadImage(NULL,"D:\\Study\\Test10\\ff.bmp",IMAGE_BITMAP,291,305,LR_LOADFROMFILE);
SelectObject(memDC,bitmap);
BitBlt(DC, 0, 0, 500, 500, memDC, 0,0, SRCCOPY);
ReleaseDC(hWnd, DC);
DeleteDC(memDC);
break;但是我碰见了另一个问题,就是显示以后,我切换一下窗口,显示的图像没有了,我需要写什么代码?
我想获得加载的这个文件的宽度和高度,代码怎么写??
=======================
因为切换过后,窗口被重绘,所以你的图象当然没有了。你应该在OnPaint里面加入你的绘制图象的代码。
=========================
BITMAP bmInfo;
bitmap = (HBITMAP)LoadImage(NULL,"D:\\Study\\Test10\\ff.bmp",IMAGE_BITMAP,291,305,LR_LOADFROMFILE);
GetObject(bitmap,sizeof(BITMAP),&bmInfo);图象的宽度:bmInfo.bmWeight
图象的高度: bmInfo.bmHeight