永发信息网

vc++不使用MFC类库,用WINDOWS API ,怎样给窗体添加JPG背景图片

答案:2  悬赏:20  手机版
解决时间 2021-03-11 10:18
  • 提问者网友:佞臣
  • 2021-03-10 16:18
vc++不使用MFC类库,用WINDOWS API ,怎样给窗体添加JPG背景图片
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-03-10 16:32
利用COM接口实现。
void DisplayImage(HDC hDC, LPCTSTR szImagePath)
{
HANDLE hFile=CreateFile(szImagePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //从指定的路径szImagePath中读取文件句柄
DWORD dwFileSize=GetFileSize(hFile, NULL); //获得图片文件的大小,用来分配全局内存
HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE, dwFileSize); //给图片分配全局内存
void *pImageMemory=GlobalLock(hImageMemory); //锁定内存
DWORD dwReadedSize; //保存实际读取的文件大小
ReadFile(hFile, pImageMemory, dwFileSize, &dwReadedSize, NULL); //读取图片到全局内存当中
GlobalUnlock(hImageMemory); //解锁内存
CloseHandle(hFile); //关闭文件句柄
IStream *pIStream;//创建一个IStream接口指针,用来保存图片流
IPicture *pIPicture;//创建一个IPicture接口指针,表示图片对象
CreateStreamOnHGlobal(hImageMemory, false, &pIStream) //用全局内存初使化IStream接口指针
OleLoadPicture(pIStream, 0, false, IID_IPicture, (LPVOID*)&(pIPicture));//用OleLoadPicture获得IPicture接口指针
//得到IPicture COM接口对象后,你就可以进行获得图片信息、显示图片等操作
OLE_XSIZE_HIMETRIC hmWidth;
LE_YSIZE_HIMETRIC hmHeight;
pIPicture->get_Width(&hmWidth); //用接口方法获得图片的宽和高
pIPicture->get_Height(&hmHeight);
pIPicture->Render(hDC,0,0,100,100,0,hmHeight,hmWidth,-hmHeight,NULL); //在指定的DC上绘出图片
GlobalFree(hImageMemory); //释放全局内存
pIStream->Release(); //释放pIStream
pIPicture->Release(); //释放pIPicture
}
全部回答
  • 1楼网友:酒醒三更
  • 2021-03-10 17:51

我说的是我个人的理解,可能不对或者不全面。

首先说c++编程,c++编程就是指用c++语言进行的编程,只要是用c++语言的都可以算c++编程。

一般学c++编程的时候都是在学习些控制台程序,就是那种黑窗口的程序。

builder c++是c++编程的一种,他是borland公司开发的一套c++编程工具,编程时用c++语言,而控件和窗口有内建的类,处理普通窗口界面的时候要容易一些。

 visual c++是c++编程的另一种工具,用 visual c++开发程序是有两种,一种是sdk编程,建立win32应用程序的项目,所有窗口和事件全部有代码输入,设计操作系统和硬件的部分用api函数操作。

还有一种是mfc编程,有点类似builder c++ 有很多内建的类和控件可以调用,而且程序的框架已经搭好了。

api编程就是用api函数进行编程,api函数是应用程序接口函数,就是涉及到系统和硬件的操作时的接口。

mfc编程已经说了。

windows编程就是指开发那种windows下运行的窗口程序的编程。像mfc编程就属于windows编程。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯