关键技术:

对于资源的载入须要几个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调用对话框资源的更多相关文章

  1. VC++中如何复制对话框资源

    法1:   在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了.       法2:vc中如何拷贝一个工程的对话框资源到另一个工程 ...

  2. VC++中复制对话框资源 之较好方法之一

    资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩.   ...

  3. CreateDialog Win32 API调用的一个小问题

    在老版本号的VC编译器上.关键调用是下面2句: InitCommonDialogs(); HWND hwndDialog = CreateDialog(hInstance, "IDD_XXX ...

  4. VC Windows API获得桌面所有窗口句柄的方法

    VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法 Windows API Windows 这个多作业系统除了协调应用程序的执行.分配内存.管理资源…之 ...

  5. Windows开发进阶之VC++中如何实现对话框的界面重绘

    技术:Windows 系统+Visual studio 2008   概述 应用程序界面是用户与应用程序之间的交互的桥梁和媒介,用户界面是应用程序中最重要的组成部分,也是最为直观的视觉体现.对用户而言 ...

  6. VC学习笔记:对话框

    VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date:O ...

  7. 车型识别API调用与批量分类车辆图片

    版权声明:本文为博主原创文章,转载 请注明出处 https://blog.csdn.net/sc2079/article/details/82189824 9月9日更:博客资源下载:链接: https ...

  8. Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

    概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...

  9. FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误

    前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误. 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很 ...

随机推荐

  1. ListView Item 点击展开隐藏问题

    public class ListAdapter extends BaseAdapter {     private Context mContext;     private View mLastV ...

  2. kafka同步生产者和异步生产者深入剖析

    什么是kafka同步生产者,什么是kafka异步生产者? 比如这里某个topic有3个分区. kafka同步生产者:这个生产者写一条消息的时候,它就立马发送到某个分区去.  kafka异步生产者:这个 ...

  3. Android Studio将Eclipse的项目作为module的依赖库

    情形: 我们现在有一个eclipse的项目,我们想把这个项目作为android studio的module的一个依赖库. 以前我们在eclipse的时候常常是在一个工作区里面把一个A工程 as a l ...

  4. table嵌套table,jquery获取tr个数

    一.所有tr的个数 $("#tableId tr").length 二.所有一级tr的个数 1.$("#tableId > tr").length 2.$ ...

  5. VIP的转移

    首先查看vip在各个节点的状态 [root@rac2 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:C9:28:D0 inet addr: ...

  6. amazeui学习笔记--css(HTML元素2)--代码Code

    amazeui学习笔记--css(HTML元素2)--代码Code 一.总结 1.行内代码:code标签<code> 2.代码片段:pre标签<pre> 3.限制代码块高度:添 ...

  7. SQL Server2008 Hierarchyid数据类型

    以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条 纪录间的父子关系.但这种方式只能标示其相对位置.解决这类问题在SqlServer2005出现之前通常是采用游标来操作 ...

  8. pat 2-05. 求集合数据的均方差(水题)

    代码: #include<cstdio> #include<iostream> #include<cmath> using namespace std; doubl ...

  9. 具体解释ebs接口之客户配置文件导入(二)

    ------------------------------------ -- 1a. Setup the Org_id ------------------------------------ ex ...

  10. (转载)iis7下站点日志默认位置

    转自http://www.cnblogs.com/mincyw/p/3425468.html iis7下站点日志默认位置   在iis6时,通过iis管理器的日志配置可以找到站点日志存储的位置. 但是 ...