目前我自己只知道三种方法
一、LoadBitmap
功能:
可从一个执行模块中载入指定的位图。
原型:
HBITMAP LoadBitmap(
__in HINSTANCE hInstance,
__in LPCTSTR lpBitmapName
);
参数:
hInstance [in]
包含位图的模块句柄
lpBitmapName [in]
以’\0’结尾的字符串,包含将要载入位图资源名字。可使用MAKEINTRESOURCE将资源ID号转换。
返回值:
如果成功,返回位图句柄,否则返回NULL。
备注:
如果文件名不存在或内存不足,函数执行失败。
当不再使用LoadBitmap对象时,调用DeleteObject删除该对象。
示例:
HBITMAP hBitmap = LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BMP));
二、SHLoadImageResource
功能:
将视图文件转换成位图文件。视图资源文件必须在资源文件中包含。
原型:
HBITMAP SHLoadImageResource (
HINSTANCE hinst,
UINT uIdImageFile
);
参数:
hinst
【in】资源句柄
uIdImageFile
【in】视图文件标号
返回值:
如果成功,返回位图句柄,否则返回NULL。
备注:
转换文件的类型包括GIF、PNG、JPG、ICO、BMP
当不再使用SHLoadImageResource对象时,调用DeleteObject删除该对象。
示例:
HBITMAP hBitmap = SHLoadImageResource(g_hInstance, IDR_IMAGE);
三、SHLoadImageFile
功能:
读取视图文件,解压并返回位图句柄。
原型:
HBITMAP SHLoadImageFile (
LPCTSTR pszFileName
);
参数:
pszFileName
[in] 将要载入的视图文件名
返回值:
如果成功,返回位图句柄,否则返回NULL。
备注:
转换文件的类型包括GIF、PNG、JPG、ICO、BMP
当不再使用SHLoadImageResource对象时,调用DeleteObject删除该对象。
示例:
HBITMAP hBmp = SHLoadImageFile(
(TEXT("\\My Documents\\My Pictures\\Waterfall.jpg")));
posted @
2009-04-22 20:45 Sandy 阅读(2047) |
评论 (0) |
编辑 收藏
摘要: SHELLEXECUTEINFO 和 ShellExecuteEx的简单使用
阅读全文
posted @
2009-04-22 14:02 Sandy 阅读(35384) |
评论 (0) |
编辑 收藏
转: http://tech.ddvip.com/2008-09/122062103760957.html
程序中如果要
使用http或socket连接服务器,需要先连接网络。ConnMgrEstablishConnectionSync函数中的CONNMGR_CONNECTIONINFO参数,不论采用IID_DestNetWAP还是IID_DestNetInternet,似乎都要依赖于
手机上的接入点设置。都怪中国移动非要搞什么CMNET、CMWAP,中国特色的通信公司。
可以自行创建一接入点。以下代码创建一个CMWAP接入点:
CString strFavoriteXml =
L"<wap-provisioningdoc>"
L"<characteristic type="CM_Networks">"
L"<characteristic type="Test_GPRS">"
L"<parm name="DestId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type="CM_GPRSEntries">"
L"<characteristic type="Test_GPRS">"
L"<parm name="DestId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"<characteristic type="DevSpecificCellular">"
L"<parm name="BearerInfoValid" value="1" />"
L"<parm name="GPRSInfoValid" value="1" />"
L"<parm name="GPRSInfoProtocolType" value="2" />"
L"<parm name="GPRSInfoL2ProtocolType" value="PPP" />"
L"<parm name="GPRSInfoAccessPointName" value="cmwap" />"
L"<parm name="GPRSInfoAddress" value="" />"
L"<parm name="GPRSInfoDataCompression" value="1" />"
L"<parm name="GPRSInfoHeaderCompression" value="1" />"
L"<parm name="GPRSInfoParameters" value="" />"
L"</characteristic>"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type="CM_ProxyEntries">"
L"<characteristic type="WAP">"
L"<parm name="SrcId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"<parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}" />"
L"<parm name="Proxy" value="10.0.0.172:80" />"
L"<parm name="Enable" value="1" />"
L"<parm name="Type" value="1" />"
L"</characteristic>"
L"</characteristic>"
L"</wap-provisioningdoc>";
LPWSTR pszwXMLout = NULL;
HRESULT hr = DMProcessConfigXML(strFavoriteXml, CFGFLAG_PROCESS, &pszwXMLout);
if ( pszwXMLout )
{
delete [] pszwXMLout;
pszwXMLout = NULL;
}
posted @
2009-04-21 14:54 Sandy 阅读(938) |
评论 (0) |
编辑 收藏
在
http://radovi.javaeye.com/blog/322096这篇博客里谈到计算机计算浮点数时的舍入误差,我也在VS2005下进行了相应的实验,如下代码:
#include <iostream>
using namespace std;
int main()
{
double f = 4.35;
int a = int(f*100);
cout << a << endl;
system("pause");
}
的确打印出来的结果是434.
老男孩给出的解释是这样的:
这个问题和二进制的表示有很大关系
简单地说
计算机不能准确表示诸如1/10等一类分数
我查到了一篇文章:
http://support.microsoft.com/kb/214118/zh-cn,如下,
IEEE 754 标准是一种方法很容易操作的压缩方式存储浮点数。 Intel coprocessors 和实现浮点数学的大多数基于 PC 的程序使用此标准。
IEEE 754 指定编号,以减少存储要求,并允许该内置二进制算法指令来处理数据以相对较快速的方式的所有微处理器上可用的二进制格式存储。 但是,是简单的、 非重复的十进制数字的某些数字转换为重复不能存储的完美的准确性的二进制数字。
例如数 1 / 10 可以表示简单小数的十进制数字系统中:
.1
但是,二进制格式中的数目将十进制重复的二进制文件:
0001100011000111000111 (和这样上)
此数字无法表示按有限数量的空间。 因此,此数字向下舍入的大约-2.78E-17 存储。
如果获取给定的结果执行多个的算术运算,这些舍入误差可能具有累积性。
看来是和二进制的表示有很大关系。
posted @
2009-04-15 13:38 Sandy 阅读(2549) |
评论 (1) |
编辑 收藏
很长时间没有用Cellular Emulator ,使用上都有一些遗忘. 所以千万别相信自己什么都能记住啊.
摘自:
http://www.cnblogs.com/upto/archive/2007/02/14/649769.html 黎波老师的博客
posted @
2009-04-15 09:59 Sandy 阅读(1925) |
评论 (0) |
编辑 收藏
昨天一直在调一段代码,流程是这样的:我在某个界面程序里先放置了一个对话框A,用户选择是或否。选择是后,会再弹出一个对话框B,并触发一个事件,然后再启动一个对话框C。这些对话框是模态的。
逻辑感觉很对,没有问题。但是界面的异常让我是头疼。A对话框选择是后,B对话框显示不完全,在C对户框显示的时候,文字显示又有异常。检查了一下,原来EndDialog没有执行成功。使用GetLastError获取的错误值也是正确的。
惆怅了……,后来利用线程,去执行那个事件,界面也正常了。
这是为什么呢?
我个人觉得是事件的执行影响到了界面的刷新,因为我的事件是在界面的程序里面执行的。它对界面消息进行了阻塞,导致界面不能刷新。
这个问题,不是我第一次遇到,以前也遇到过这样的问题,没有总结。总结一下,不要再犯了。
posted @
2009-04-14 09:10 Sandy 阅读(379) |
评论 (0) |
编辑 收藏
Windows Mobile上联系人的信息可分别存储在手机和SIM卡中。我尝试过从手机,即所谓的Outlook联系人中读取联系人的信息,但是还没有尝试过从sim卡中读取联系人的信息,心里也一直默认为难吧。今天查了一下,发现竟然这么简单,相比outlook的读取方式来说,简单很多。
我们先来定义个结构
typedef struct {
TCHAR szName[32];
TCHAR szTelNum[32];
}CONTACTSTRUCT;
要使用SIM的相关文件,需要包含头文件 simmgr.h
首先要初始化一下
HSIM lphSim;
HRESULT hr = SimInitialize(0, NULL, 0, &lphSim);
if(FAILED(hr))
{
return;
}
其次获取总共使用的多少条记录与总共可以容纳的记录条数
DWORD dwUsed,dwTotal;
hr = SimGetPhonebookStatus(lphSim, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal);
然后我们读取联系人的信息
定义一个
std::vector<CONTACTSTRUCT> vContact;
for(int i=0; i<dwTotal; i++)
{
//对结构初始话以下
SIMPHONEBOOKENTRY phoneent;
memset(&phoneent,0,sizeof(phoneent));
phoneent.cbSize = sizeof(phoneent);
if (SUCCEEDED(SimReadPhonebookEntry(lphSim, SIM_PBSTORAGE_SIM, i+1, &phoneent)))
{
CONTACTSTRUCT tempContact = {0};
wcsncpy(tempContact.szName, phoneent.lpszText, 31); // 姓名
wcsncpy(tempContact.szTelNum, phoneent.lpszAddress, 31); // 电话
vContact.push_back(tempContact );
}
}
//最后别忘了清理
SimDeinitialize(lphSim);
lphSim = NULL;
这里读取的时候用了dwTotal,是因为听有经验的人说,sim卡的存储可能不连续,如果用dwUsed的话,可能会有问题。
积累一下,有时间再好好看一下outlook联系人的。
参考文章:
Pocket 中获取SIM卡中联系人信息
http://blog.csdn.net/xulg1984/archive/2008/05/30/2497712.aspx
posted @
2009-04-09 15:20 Sandy 阅读(3047) |
评论 (0) |
编辑 收藏
摘要: 意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。 1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域...
阅读全文
posted @
2009-04-08 13:48 Sandy 阅读(285) |
评论 (1) |
编辑 收藏
转自: http://www.cnblogs.com/dotnetearthworm/archive/2009/02/02/1382488.html
.sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。
.csproj:项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。
.aspx:Web 窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。Visual Studio 将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。
.ascx:ASP.NET的用户控件(也叫做“pagelets”),是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了HTML、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。ASP.NET里的缺省配置并不允许Web客户端通过URL来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。
.aspx.cs:Web 窗体页的编程逻辑位于一个单独的类文件中,该文件称作代码隐藏类文件(.aspx.cs)。
.cs: 类模块代码文件。业务逻辑处理层的代码。
.asax:Global.asax 文件(也叫做 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块引发的应用程序级别事件的代码。
.config:Web.config 文件向它们所在的目录和所有子目录提供配置信息。
.aspx.resx/.resx:资源文件,资源是在逻辑上由应用程序部署的任何非可执行数据。通过在资源文件中存储数据,无需重新编译整个应用程序即可更改数据。 51aspx.com
.XSD:XML schema的一种.从DTD,XDR发展到XSD
.pdb:PDB(程序数据库)文件保持着调试和项目状态信息,从而可以对程序的调试配置进行增量链接。
.suo:解决方案用户选项,记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。
.asmx:.asmx文件包含 WebService 处理指令,并用作 XML Web services 的可寻址入口点 51aspx。
.vsdisco(项目发现)文件 基于 XML 的文件,它包含为 Web 服务提供发现信息的资源的链接 (URL-51aspx )。
.htc:一个HTML文件,包含脚本和定义组件的一系列HTC特定元素.htc提供在脚本中implement组件的机制
来源: .Net中文社区(http://www.aspxcs.net/)
上面是我看到的一些介绍,这里再补充一些:
.clw 支持ClassWizard
.ncb 支持ClassView
.opt 保存工作空间的配置
.aps 支持ResourceView
.bsc 浏览器信息文件
.dsp 项目文件
.dsw 工作空间文件
.mak 外部的创建文件
.plg 建立日志文件
posted @
2009-04-08 13:43 Sandy 阅读(1212) |
评论 (3) |
编辑 收藏
对于warning C4005: 'WINVER' : macro redefinition的处理
在Windows.h中有如下定义:
#ifndef WINVER
#define WINVER 0x0400
#endif
如果你把#define WINVER 0x500置于#include <windows.h>之前,就不会出现警告.
摘自:http://topic.csdn.net/t/20020103/15/456195.html
posted @
2009-04-07 15:22 Sandy 阅读(8040) |
评论 (0) |
编辑 收藏