摘要: 网上关于ADO的使用方法很多,这边我个人就整理出一个使用ADO的方法的具体步骤:1、用#import引入ADO库文件在stdafx.h文件中添加#import "c:\program files\common files\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF")
2、 数据库连接,创建CDBConn...
摘要: 指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
摘要: 标准模板库(The Standard Template Library, STL)定义了五种迭代器。下面的图表画出了这几种:
input output &nb...
摘要: 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
AppFace For VC 支持Win9X/NT/2K/XP,UNICODE/ANSI,能够对目标进程里的所有Widows标准控件,系统菜单,通用对话框等实现换肤,对非商业用途而言,它是完全免费的。关键的是AppFace的使用非常简单,很容易添加到已有的工程中。可以到它的网站 http://www.appface.com 去下载最新版本 。
AppFace 支持三种皮肤加载方式,从磁盘文件加载,从资源加载,从内存加载。下面我就说说如何从资源加载URF皮肤文件:
首先,要确保你下载了AppFace for VC 开发包,我们要用到其中的三个文件: "appface.h", "appface.dll" ,"gtclassic.urf" 。
接着,创建一个 VC 可执行文件工程, MDI/SDI/DIALOG/WIN32 类型的都可以,我以创建一个DIALOG 工程 ResSkin 进行说明 。将"appface.h" 拷贝到该工程目录下,将"Appface.dll"拷贝到该工程的输出目录下,例如:"debug\",将"gtclassic.urf"拷贝到资源所在目录下。在VC 的项目管理器中进入资源管理项,在右键菜单中选择"Import",将"gtclassic.urf"添加进工程,资源类型设定为: "MYRESTYPE",资源ID设定为"IDR_MY_URF"。注意:资源ID 前面一定要加双引号 。
准备工作全部完成了,现在进入正题:
1.在ResSkin.cpp 中加入: #include "appface.h"
2.在CResSkinApp::InitInstance() 成员函数中添加如下代码
CResSkinApp::InitInstance()
{
...
CAppFace af ; //line 1
af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ; //line 2
CResSkinDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
...
af.Remove() ; //line 3
}
编译... 一切搞定 !
3. 上面是官方的做法,由于appface 也支持从内存中加载urf,所以您也可以这样做:
CResSkinApp::InitInstance()
{
...
CAppFace af ; //Init
//Load
if(HRSRC hr = ::FindResource(NULL,"IDR_MY_URF","MYTYPE"))
{
ULONG nResSize = ::SizeofResource(NULL,hr) ;
if(HGLOBAL hz = ::LoadResource(NULL,hr))
{
char* p = (char*)LockResource(hz);
if(p)
af.Start(p,GTP_LOAD_MEMORY,nResSize,NULL,NULL) ;
}
}
CResSkinDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
...
af.Remove() ; //Release
}
你可以使用这种方法从资源中加载其它数据。
需要注意的是: 如果将URF添加进资源时,资源ID没有用双引号括起来, 加载时必须这样写:
af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,MAKEINTRESOURCE(_T("MYTYPE")),NULL)) ; //line 2
添加“换皮肤“按钮
添加一个Button,消息响应函数如下
void CChatDlg::OnButton2()
{
x++; //全局变量,static int x=3;
int x1;
x1=x%3;
if(x1==1)
{
CAppFace af ;
af.Start(_T("IDR_MY_URF1"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ;
this->MoveWindow(81,75,870,602);
}
if(x1==2)
{
CAppFace af ;
af.Start(_T("IDR_MY_URF2"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ;
this->MoveWindow(81,75,854,595);
}
if(x1==0)
{
CAppFace af ;
af.Start(_T("IDR_MY_URF"),GTP_LOAD_RESOURCE,NULL,_T("MYTYPE"),NULL) ;
this->MoveWindow(81,75,865,602);
}
}
Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage().
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。输入一个正整数x。输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。考虑素数的情况