c语言编程为什么显示图片,windows编程 奇怪的图片显示问题

已结贴√

问题点数:20 回复次数:12

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

windows编程 奇怪的图片显示问题

我想显示一张图片,以下代码编译没错,在vc下生成的程序也没问题,可以达到显示图片的功能,但是就是在Debug文件夹的exe软件不能显示那张图片,为什么会出现这个问题呢?               如果可以的话,请附上一个最简单的以图片作为背景的代码```````````````先谢谢各位了~~~~~

#include "windows.h"

#include "resource.h"

#include

//窗口函数的函数原形

LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);

HWND hwnd;

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

{  MSG msg;

char szClassName[]="MainWClass";

WNDCLASSEX wndclass;

//用描述主窗口的参数填充WNDCLASSEX结构

wndclass.cbSize       =sizeof(wndclass);                    //  结构体大小

wndclass.style        =CS_HREDRAW|CS_VREDRAW;               //  指定如果大小改变就重画

wndclass.lpfnWndProc  =MainWndProc;                         //  窗口函数指针

wndclass.cbClsExtra   =0;                                   //  没有额外的类内存

wndclass.cbWndExtra   =0;                                   //  没有额外的窗口内存

wndclass.hInstance    =hInstance;                           //  实例句柄

wndclass.hIcon        =NULL;//LoadIcon(hInstance,(LPSTR)IDI_ICON1);      //  使用预定义图标

wndclass.hCursor      =LoadCursor(NULL,IDC_ARROW);          //  使用预定义光标

wndclass.hbrBackground=(HBRUSH)GetStockObject(16); //  使用白色背景画刷

wndclass.lpszMenuName =NULL;//(LPSTR)IDR_TYPER;                                //  不指定菜单

wndclass.lpszClassName=szClassName;                         //  窗口类的名称

wndclass.hIconSm      =NULL;                                //  没有类的小图标

//注册窗口类

RegisterClassEx(&wndclass);

//创建主窗口

hwnd=CreateWindow(

szClassName,

"香薰恋人",

WS_OVERLAPPEDWINDOW,//WS_DISABLED,

600,//CW_USEDEFAULT,

400,//CW_USEDEFAULT,

300,//CW_USEDEFAULT,

300,//CW_USEDEFAULT,

NULL,

NULL,

hInstance,

NULL,

);

if(hwnd==NULL)

{

MessageBox(NULL,"创建窗口出错!","error",MB_OK);

return -1;

}

//显示窗口,刷新窗口客户区

ShowWindow (hwnd,nCmdShow);

UpdateWindow(hwnd);

//从消息队列中取得消息,交给窗口函数处理,直到GetMessage 返回FALSE ,结束消息循环

SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOREDRAW|SWP_NOSIZE);

while(GetMessage(&msg,NULL,0,0))

{

//转化键盘消息

TranslateMessage(&msg);

//将消息发送到相应的窗口函数

DispatchMessage(&msg);

}

//当GetMessage返回FALSE 时结束函数

return msg.wParam;

}

LRESULT CALLBACK MainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

switch (message)

{

case WM_PAINT:

{

PAINTSTRUCT ps;

HDC hdc;

HBITMAP hbmp;

BITMAP bmp;

HDC hdcMem;

hdc = BeginPaint(hwnd, &ps);

hdcMem  = CreateCompatibleDC(hdc);

hbmp = (HBITMAP)LoadImage(NULL, ("11.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

GetObject(hbmp, sizeof(BITMAP), &bmp);

SelectObject(hdcMem, hbmp);

BitBlt(hdc, 0, 0, bmp.bmWidth, bmp.bmHeight, hdcMem, 0, 0, SRCCOPY);

DeleteDC(hdcMem);

//DeleteObject(hbmp);

EndPaint(hwnd, &ps);

break;

}

case WM_DESTROY:  //正在销毁窗口

//向消息队列投递一个WM_OUIT 消息,促使GetMessage 函数返回0,结束消息循环

PostQuitMessage(0);

return 0;

break;

}

//将我们不处理的消息交给系统做默认处理

return DefWindowProc(hwnd,message,wParam,lParam);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值