为什么我的c++程序无法显示图片

我的程序如下#include"stdafx.h"�HINSTANCEhInst;HBITMAPhbmp;HDCmdc;�ATOMMyRegis... 我的程序如下

#include "stdafx.h"


HINSTANCE hInst;
HBITMAP hbmp;
HDC mdc;


ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void MyPaint(HDC hdc);

//****主程序**************************************
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;

MyRegisterClass(hInstance);

//运行初始化函数
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}

//消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

//****定义函数及窗口类别函数*************************
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "canvas";
wcex.hIconSm = NULL;

return RegisterClassEx(&wcex);
}

//****初始化函数*************************************
// 1.建立与窗口DC兼容的内存DC
// 2.从文件加载位图并存至内存DC中
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
HDC hdc;

hInst = hInstance;

hWnd = CreateWindow("canvas", "绘图窗口" , WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

MoveWindow(hWnd,10,10,600,450,true);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);

hbmp = (HBITMAP)LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,600,450,LR_LOADFROMFILE);
SelectObject(mdc,hbmp);

MyPaint(hdc);
ReleaseDC(hWnd,hdc);

return TRUE;
}

//****自定义绘图函数*********************************
void MyPaint(HDC hdc)
{
BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY); //贴图
}

//****消息处理函数***********************************
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;

switch (message)
{
case WM_PAINT: //消息重绘窗口
hdc = BeginPaint(hWnd, &ps);
MyPaint(hdc);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY: //窗口结束消息
DeleteDC(mdc);
DeleteObject(hbmp);
PostQuitMessage(0);
break;
default: //其他消息
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

无任何编程错误 也可以运行 但是出现的窗口就是没有图片 图片也在程序的文件夹内 我感觉一点错误都没有 我的师兄说是 c++对于图片的链接 没有设置 我不知道是不是这个原因 求高手救我于颓废之中 这个程序出自 visual c++游戏编程基础这本书
展开
 我来答
qufulin750
2009-11-07 · TA获得超过178个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:225万
展开全部
你的程序没有问题, 是你的图片的位置有问题, 你不要把图片放到和源代码一个文件夹下, 而是和生成的.exe程序在一起, 如果你是用debug编译模式的话一般就在源代码目录下的debug目录下.
VC鸟人
2009-11-09 · 超过32用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:0
展开全部
我用你的程序进行运行。图片是可以显示的,你可以查查你的图片格式可对? 可能并不是*.bmp图片,是被手动改了扩张名。我建议你换一个简单的bmp图片来试试。如果是图片读取出现问题,自然不能显示。 如果不是这个原因,你把程序放在别的电脑上运行,看看能否成功。由于电脑性能不一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式