VC++中用API调用对话框资源
关键技术:
对于资源的载入须要几个API函数,以下分别介绍这几个API函数。
a) FindResource 用来在一个指定的模块中定位所指的资源,语法例如以下:
HRSRC FindResource(HMODULE hModule, LPCRSTR lpName, LPCTSTR lpType);
參数说明:
(1)hModule: 包括所须要的资料的模块句柄。假设是程序本身,则能够设置为NULL;
(2)lpName: 能够使资源名称或者资源ID。
(3)lpType:资源类型。在这里也就是自己指定的资源类型。
b) LoadResource 用来将全部的资源载入到内存中。语法例如以下:
HGLOBAL LoadResource(HMODULE hModule, HRSRC hResInfo);
參数说明:
(1)hModule: 包括所须要的资料的模块句柄。假设是程序本身。则能够设置为NULL;
(2)hReInfo: 须要载入的资源句柄。这里也就是FindResource的返回值;
c) LockResource 用来锁定内存中的资源数据块,返回值也就是要使用的直接指向资源数据的指针,语法例如以下:
LPVOID LockResource(HGLOBAL hResData);
參数说明:
hResData: 指向内存中要锁定的资源数据块。这里也就是LoadResource的返回值。
效果例如以下:
设计过程:
1)使用VC6.0创建基于对话框的应用程序。
2)向窗口中加入一个静态文本控件。用鼠标右键点击对话框。在弹出的快捷键菜单中选择Properties命令,设置窗口的Caption属性为“API调用对话框资源”,如图(2)所看到的,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FucWltYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
图(2)import 资源
3)在资源视图中,点击鼠标右键,在在弹出的快捷键菜单中选择Import命令。弹出“导入资源对话框”,选择一个txt文件,点击“Import”。
4)在弹出的“自己定义资源类型”对话框中设置一个自己定义资源类型,这里输入“Text”。如图(3)所看到的,
图(3) 新类向导
5)按Ctrl+W 组合键进入 类向导,为文本控件加入变量,如图(4)所看到的,
图(4)为控件关联变量
6)设置文本框的属性,使其具有多行显示并能够显示滚动栏,如图(5)所看到的,
图(5)设置多行显示,并显示水平垂直滚动栏
7)加入“载入资源”button的点击事件,动态载入文本资源显示在文本框内,代码例如以下:
void CAPIResourceDlg::OnLoadResource()
{
HRSRC hRsrc = FindResource(NULL,MAKEINTRESOURCE(IDR_TEXT1),TEXT("Text"));
if(NULL == hRsrc)
return ;
//获取资源的大小
DWORD dwSize = SizeofResource(NULL,hRsrc);
if(0 == dwSize)
return ;
//载入资源
HGLOBAL hGlobal = LoadResource(NULL,hRsrc);
if(NULL == hGlobal)
return ;
//锁定资源
LPVOID pBuffer = LockResource(hGlobal);
if(NULL == pBuffer)
return ;
m_Edit = (char *)pBuffer;
this->UpdateData(false);
UnlockResource(hGlobal);//资源解锁
FreeResource(hGlobal); //释放资源
}
VC++中用API调用对话框资源的更多相关文章
- VC++中如何复制对话框资源
法1: 在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了. 法2:vc中如何拷贝一个工程的对话框资源到另一个工程 ...
- VC++中复制对话框资源 之较好方法之一
资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩. ...
- CreateDialog Win32 API调用的一个小问题
在老版本号的VC编译器上.关键调用是下面2句: InitCommonDialogs(); HWND hwndDialog = CreateDialog(hInstance, "IDD_XXX ...
- VC Windows API获得桌面所有窗口句柄的方法
VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法 Windows API Windows 这个多作业系统除了协调应用程序的执行.分配内存.管理资源…之 ...
- Windows开发进阶之VC++中如何实现对话框的界面重绘
技术:Windows 系统+Visual studio 2008 概述 应用程序界面是用户与应用程序之间的交互的桥梁和媒介,用户界面是应用程序中最重要的组成部分,也是最为直观的视觉体现.对用户而言 ...
- VC学习笔记:对话框
VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date:O ...
- 车型识别API调用与批量分类车辆图片
版权声明:本文为博主原创文章,转载 请注明出处 https://blog.csdn.net/sc2079/article/details/82189824 9月9日更:博客资源下载:链接: https ...
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...
- FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误
前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误. 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很 ...
随机推荐
- .vsdc和.svf用于formal verification tools
svf:Setup Verification for Formality
- 并发,two
引言 为了更加形象的描述并发的基础知识,因此本文LZ采用了园子里一度大火的标题形式--"没听说过XXXX,就不要说你XXXX了".希望能够给猿友们一个醒目的警醒,借此来普及并发的基 ...
- 11.5 Android显示系统框架_Vsync机制_黄油计划_三个方法改进显示系统
5. Vsync机制5.1 黄油计划_三个方法改进显示系统vsync, triple buffering, vsync虚拟化 参考文档:林学森 <深入理解Android内核设计思想>第2版 ...
- Hypervisor scheduler
Techniques for configuring a hypervisor scheduler to make use of cache topology of processors and ph ...
- 如何安装Python环境以及为Visual Studio 2012安装Python插件
(一)首先,我机器上的开发环境安装的是Visual Studio 2012版本,系统为window7,64位,要安装的Python版本为python3.4-x64,双击安装包安装Python环境,需要 ...
- UvaLive 6663 Count the Regions 离散化+DFS
链接:http://vjudge.net/problem/viewProblem.action?id=49408 题意:在平面内给出若干个矩形,求出它们能将整个平面分成多少份. 思路:刚開始一眼看到认 ...
- C#中lock
http://www.cnblogs.com/apsnet/archive/2012/07/08/2581475.html
- Android(Lollipop/5.0) Material Design(四) 创建列表和卡片
Material Design系列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design( ...
- APK瘦身记,怎样实现高达53%的压缩效果
作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...
- 利用VS安装项目打包软件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 昨天摸索了一下,发现使用VS安装项目来打包软件还是挺方便的. 1. 创建一个安装项目工程,如下图: 2. 设置工程属性 ...