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" >

图(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); //释放资源
}
时间: 2024-12-24 19:59:02

VC++中用API调用对话框资源的相关文章

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

法1: 在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了. 法2:vc中如何拷贝一个工程的对话框资源到另一个工程中? 这是一个很专业也很有用的问题.其实VC的设计者早就为我们考虑了这个问题. 在VC6环境下,选择Class视图,选中想要克隆的对话框所对应的类,例如CAboutDlg,点击鼠标右键,选择Add to gallery.在新工程中选择Project菜单,选择Add Component and ActivX,你会看到

VC和VS调用Lua设置以及Lua C API使用。

通过c++调用lua 脚本,    环境VC++6.0    lua  sdk 5.1.4 在调用前先认识几个函数.1.调用lua_open()将创建一个指向Lua解释器的指针.2. luaL_openlibs()函数加载Lua库.3.使用luaL_dofile()加载脚本并运行脚本.4. lua_close()来关闭Lua指向解释器的指针. 5.调用lua_getglobal()将add()函数压入栈顶,add()为lua函数.6.第一个参数x,通过调用lua_pushnumber()入栈.7

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

资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩. 问题:把一个MFC SDI工程中的一个对话框资源和类拷贝到另一个MFC SDI中. 1.在VC2012中打开老的工程,在工作区Resource标签页中选中Dialog文件夹下的资源文件(就是双击后会出现编辑窗口界面的那个东西),按Ctrl+C(Edit->Copy也一样). 2.关闭当前工程,注意不要关

CreateDialog Win32 API调用的一个小问题

在老版本的VC编译器上,关键调用是以下2句: InitCommonDialogs(); HWND hwndDialog = CreateDialog(hInstance, "IDD_XXX", ...); 但是在新版本的VS上,InitCommonDialogs这个API似乎已经没了,而CreateDialog还有,问题是,对话框的界面出不来,什么原因呢? 推测InitCommonDialogs这个API注册了默认的系统对话框窗口类,这样CreateDialog的第二个参数才能以字符串

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

VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法 Windows API Windows 这个多作业系统除了协调应用程序的执行.分配内存.管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗.描绘图形.使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 A

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

技术:Windows 系统+Visual studio 2008 概述 应用程序界面是用户与应用程序之间的交互的桥梁和媒介,用户界面是应用程序中最重要的组成部分,也是最为直观的视觉体现.对用户而言,界面就是应用程序,界面设计的好坏,会直接影响应用程序的可用性,从而影响用户的体验. 在软件开发过程中,对界面的设计椅子都是一项很重要的技术,如今的应用软件界面可谓是“丰富多彩.美丽绝伦”,如大家熟悉的360安全卫士.腾讯QQ聊天软件.Visual C++ 编程词典软件等,都是非常不同于普通的对话框应用

在VC中创建两套资源解决中英文版本发布的问题

原文http://blog.csdn.net/ylforever/article/details/6745611 一.背景 当软件需要发布多个不同语言版本时,对资源编辑的菜单,按钮,对话框大小形状有不同的要求.比如同个单词用中文/英文描述字符长度差异较大,如果这个单词 用作按钮的标题,对按钮的大小要求就不一样.这时可以有两种解决方法:1.通过代码动态调整按钮的大小,较麻烦,也破坏了VC资源编辑所见即所得规则. 2.准备两套资源,编译不同的版本用不同的资源.下面重点描述第二种处理方法的详细步骤.

UIWebView中Html中用JS调用OC方法及OC执行JS代码

1.HTML页面 1 <html> 2 3 <head> 4 5 <title>HTML中用JS调用OC方法</title> 6 7 <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> 8 9 <script> 10 11 function test() 12 13 { 14 15 alert("test

WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现

原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过