开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 23385|回复: 3
收起左侧

[图文教程] C++中LoadImage函数讲解

[复制链接]
结帖率:0% (0/1)
发表于 2012-6-19 19:12:02 | 显示全部楼层 |阅读模式   湖南省长沙市
函数定义:HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad)
这里我们只要这个函数的几个简单功能:从磁盘加载位图,从磁盘加载图标,从磁盘加载光标。所以第一个参数hinst我们不用管它,直接填NULL就行,第二个参数lpszName是图片文件所在路径名,第三个参数uType指明要加载的是什么类型的图片,
是位图(填IMAGE_BITMAP),还是光标(填IMAGE_CURSOR),还是图标(填IMAGE_ICON)。第四个cxDesired和第五个参数CyDesired,指定要加载的图片的宽高(可以放大光标,或者缩小),如果加载的是位图的话,则两个参数必须为0,第六个参数fuLoad表示以何种方式加载文件,这里我们是从磁盘加载文件,所以填LR_LOADFROMFILE;
好了,假设e盘下有一个c.cur和i.ico文件。例子:设置窗口图标和光标,还有背景色
#include "stdafx.h"//这个头文件是编译器自动生成的,不是空工程,都会有,
//如果是直接建C++源文件,包含这个头文件,会出错

#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,       // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
); //
窗口过程函数声明
int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,    // handle to previous instance
  LPSTR lpCmdLine,           // command line
  int nCmdShow                // show state
)
{
  //
设计一个窗口类
  WNDCLASS wndcls;
  wndcls.cbClsExtra=0;
  wndcls.cbWndExtra=0;
  wndcls.hbrBackground=CreateSolidBrush(RGB(12,172,59));//画刷

  wndcls.hCursor=(HCURSOR)LoadImage(NULL,"e:\\c.cur",IMAGE_CURSOR,24,24,LR_LOADFROMFILE);//加载光标
  wndcls.hIcon=(HICON)LoadImage(NULL,"e:\\i.ico",IMAGE_ICON,48,48,LR_LOADFROMFILE);//加载图标
  wndcls.hInstance=hInstance;   //应用程序实例句柄由WinMain函数传进来
  wndcls.lpfnWndProc=WinSunProc; //定义窗口处理函数

  wndcls.lpszClassName="windowclass";
  wndcls.lpszMenuName=NULL;
  wndcls.style=CS_HREDRAW | CS_VREDRAW;
  RegisterClass(&wndcls);
  
  //
创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄
  HWND hwnd;
  hwnd=CreateWindow("windowclass","first window",
WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
\\n
//显示及刷新窗口

  ShowWindow(hwnd,SW_SHOWNORMAL);
  UpdateWindow(hwnd);
  //定义消息结构体,开始消息循环

  MSG msg;
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

//编写窗口过程函数

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
  switch(uMsg)
  {
  case WM_CHAR: //字符消息

    char szChar[20];
    sprintf(szChar,"char code is %c",wParam);
    MessageBox(hwnd,szChar,"char",0);
    break;
   case WM_LBUTTONDOWN: //
鼠标左键按下消息
    MessageBox(hwnd,"mouse clicked","message",0);
    break;
  case WM_CLOSE:
    if(IDYES==MessageBox(hwnd,"
是否真的结束?","message",MB_YESNO))
    {
      DestroyWindow(hwnd); //销毁窗口,并发送WM_DESTROY消息给自身窗口

    }
    break;
  case WM_DESTROY:
    PostQuitMessage(0);
    break;
  default:
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
  }
  return 0;
}

结帖率:60% (3/5)
发表于 2012-6-19 20:41:04 | 显示全部楼层   上海市上海市
同学你这个精币数目好像不对呀
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
 楼主| 发表于 2012-6-20 12:10:05 | 显示全部楼层   湖南省长沙市
小磊 发表于 2012-6-19 20:41
同学你这个精币数目好像不对呀

怎么了 小磊大大
回复 支持 反对

使用道具 举报

发表于 2015-12-3 16:35:40 | 显示全部楼层   浙江省宁波市
,非常不错的技术啊。,学习了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表