一个有关.bmp文件的问题

sssyyyooo 2001-11-20 11:17:07
我现在有一个.bmp文件,我把该文件中的图象画在对话框的某一个特定区域上
在构造函数中
m_Bitmap.LoadBitmap(IDC_BITMAP1);

void CMapnewDlg::OnPaint()
{

CPaintDC dc(this); // device context for painting
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBitmap=memDC.SelectObject(&pBitmap);
BITMAP bm;
pBitmap.GetObject(sizeof(BITMAP),&bm);

dc.BitBlt(200,190,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBitmap);
}
这样可以画出图象

但是我现在只有一个.bmp文件,不允许手工在资源框里导入建立ID号,如何把.bmp文件中的图象画在对话框上,只能编程把图象画在对话框上,是否可以编程创建ID号

...全文
189 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
gameboy999(我心迷茫)还在吗? 你的文件是否某个地方少了语句
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
gameboy999(我心迷茫)还在吗?
dog_dog 2001-11-20
  • 打赏
  • 举报
回复
push
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
为什么编译时出现oleimage.cpp(70) : fatal error C1010
unexpected end of file while looking for precompiled header directive
gameboy999 2001-11-20
  • 打赏
  • 举报
回复
使用方法
在initdialog中加入
xxx.loadoleimage("dddd.bmp");


在onpaint中加入
rect随便弄一个。就取client区域好了
xxx.render(pDC,rect);
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
能再详细些吗?或发给我ssyyo@263.net
gameboy999 2001-11-20
  • 打赏
  • 举报
回复
Cpp文件。 它可以显示gif,jpg,bmp文件

#include "OleImage.h"

COleImage::COleImage()
{
gpPicture=NULL;
}

COleImage::~COleImage()
{
if(gpPicture)
gpPicture->Release();
}

void COleImage::LoadOleImage(CString ImageName)
{
HANDLE hFile = CreateFile(ImageName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
_ASSERTE(INVALID_HANDLE_VALUE != hFile);

// get file sizet
DWORD dwFileSizeHigh;
DWORD dwFileSize = GetFileSize(hFile, &dwFileSizeHigh);
_ASSERTE(-1 != dwFileSize);

LPVOID pvData = NULL;
// alloc memory based on file size
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
_ASSERTE(NULL != hGlobal);

pvData = GlobalLock(hGlobal);
_ASSERTE(NULL != pvData);

DWORD dwBytesRead = 0;
// read file and store in global memory
BOOL bRead = ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
_ASSERTE(FALSE != bRead);
GlobalUnlock(hGlobal);
CloseHandle(hFile);

LPSTREAM pstm = NULL;
// create IStream* from global memory
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
_ASSERTE(SUCCEEDED(hr) && pstm);

// Create IPicture from image file
if (gpPicture)
gpPicture->Release();
hr = ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);
_ASSERTE(SUCCEEDED(hr) && gpPicture);
pstm->Release();
pstm = NULL;

if(gpPicture != NULL)
{
gpPicture->get_Width(&hmWidth);
gpPicture->get_Height(&hmHeight);
}
}

void COleImage::Render(CPaintDC *pDC,CRect &rc)
{
if(gpPicture)
{
// int nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
// int nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);
int nWidth = MulDiv(hmWidth, GetDeviceCaps(pDC->m_hDC, LOGPIXELSX), HIMETRIC_INCH);
int nHeight = MulDiv(hmHeight, GetDeviceCaps(pDC->m_hDC, LOGPIXELSY), HIMETRIC_INCH);
gpPicture->Render(pDC->m_hDC, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, &rc);
}
}
gameboy999 2001-11-20
  • 打赏
  • 举报
回复
头文件

//author dah
//made for store and display the image

#ifndef _____OleImage___h____
#define _____OleImage___h____

#include "Afx.h"
#include "Afxwin.h"
#include "olectl.h"

#define HIMETRIC_INCH 2540

class COleImage
{

public:
COleImage();
~COleImage();
public:
//只有loadOleImage后才能打开文件!
void LoadOleImage(CString ImageName);
void Render(CPaintDC *pDC,CRect &rc);
IPicture* gpPicture;
long hmWidth;
long hmHeight;
int nWidth;
int nHeight;
};

#endif
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
难道没人会吗
chskim 2001-11-20
  • 打赏
  • 举报
回复
用LodeImage直接传进文件名.那就不需要什么ID号.
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
难道没人会吗?
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
你们好
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
如何把参与分转化为可用分
gameboy999 2001-11-20
  • 打赏
  • 举报
回复
这个我可不知道了
试试输入http://localhost/sy/
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
我在Internet信息服务默认FTP站点里设了一个默认站点sy,FTP站点目录:本地路径:c:我在地址栏里输入:ftp://localhost/sy/,为什么出现错误:阅读文件夹时发生错误,请确保文件名有效,并且您有权访问指定的位置 详细信息:终止FTP会话
是否输入:ftp://localhost/sy/,就可以看到传过来的文件
gameboy999 2001-11-20
  • 打赏
  • 举报
回复
哦,你在project-->setting-->里面把oleimage.cpp的 precomplied header去掉

或者把整个工程的precomplied ....置为 automatic就行了
sssyyyooo 2001-11-20
  • 打赏
  • 举报
回复
我知道了,少了#include "stdafx.h"

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧