http://www.codeproject.com/gdi/pxalphablend.asp http://www.codeproject.com/miscctrl/csplashscreenex.asp
用Photoshop做Mac风格的按钮
新建文档,RGB模式,白色背景。建立图层1,设置前景色为RGB(51,143,206)。然后选择圆角矩形工具,在工具选项中,设置绘图方式为填充像素,将矩形的圆角半径设为50像素,选择消除锯齿。点击几何选项,将矩形的大小设为91×27像素,在画布正中点击一下,即会出现一个蓝色的圆角矩形。
现在我们开始添加图层样式了。首先选择投影:将投影的不透明度降低为33%,取消全局光,角度为134度,距离和大小均为1像素,扩展为0,品质不变;
然后是内阴影样式:将内阴影的颜色设为RGB(0,56,113),不透明度为100%,取消全局光,角度为90度,距离为6像素,阻塞为15%,大小为16像素,品质保持不变,这样,按纽就具有了立体感。
接下来我们要制作光线从按纽中透出的感觉。选择内发光样式,将混合模式设为颜色减淡,不透明度为30%,颜色为白色,方法为较柔软,居中,阻塞为31%,大小为21像素,要特别注意等高线的形状,打开默认的等高线编辑器,将曲线设为图03的形状,选择消除锯齿,范围为31%;
下面是最关键的一步——添加强烈的反光效果。选择斜面和浮雕样式,将样式设为内斜面,方法为平滑,深度为81%,方向为上,大小为9像素,软化为1像素,阴影的角度为90度,高度为73度,高光和暗调的不透明度均为100%,暗调的模式为正常,颜色为RGB(4,126,188),这样高光效果就出来了。
但这样是不够的,我们希望高光效果更为贴切。选择等高线,注意是斜面等高线,而不是光泽等高线,将等高线类型选择为预设类型中的半圆,消除锯齿,范围为69%,这样就能得到逼真的反光效果。
- 为了使按钮看起来更好,我们添加一些简单的阴影效果。但我们的样式中已经采用了投影样式,所以要另外想办法。按住Ctrl键,载入按纽的不透明度区域,从编辑菜单中选择合并拷贝命令,在图层1之下新建一层,按Ctrl+V,将图像粘贴到新层中,取消选择。
合并拷贝命令可以复制选区内所有图层的图像,包括图层样式在内,这里,我们所用这个命令就是为了拼合图层样式的效果。此外,在粘贴前,如果没有取消选择,那么图像会粘贴入选区中,否则的话,图像会被自动粘贴到图层的正中。
对图层2使用高斯模糊,半径大概为5.5像素左右。再用移动工具将图层移动到按纽的右下方,作为透明阴影。
- 最后,在按纽上写上文字即可。如果你更喜欢淡灰色的透明按钮,这里有个简单的法子:打开通道面板,点击蓝色通道,仅显示这一个通道的图像,由于我们的按纽是蓝色调的,所以这个通道内的图像最能体现按纽的情况。如果你的按纽是红色调或是绿色调的,那么同样,分别选择红色通道和绿色通道,就能得到灰色的透明按钮了。
获取快捷方式的文件路径
#include
bool ReadShortcut(LPWSTR lpwLnkFile, LPSTR lpDescFile) { bool bReturn = true; IShellLink *pShellLink;
if(bReturn)
{
bReturn = (CoInitialize(NULL) == S_OK);
if(bReturn)
{
bReturn = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (void **)&pShellLink;) >= 0;
if(bReturn)
{
IPersistFile *ppf;
bReturn = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf;) >= 0;
if(bReturn)
{
bReturn = ppf->Load(lpwLnkFile, TRUE) >= 0;
if(bReturn)
{
pShellLink->GetPath(lpDescFile, MAX_PATH, NULL, 0);
}
ppf->Release ();
}
pShellLink->Release ();
}
CoUninitialize();
}
}
return bReturn;
}
// 测试代码: char szBuf[MAX_PATH]; ReadShortcut(L”C:\GLWorld.lnk”, szBuf); MessageBox(0, szBuf, “”, 0);
利用windows提供的advapi32.dll进行MD5加密
#include
/ Data structure for MD5 (Message-Digest) computation / typedef struct { ULONG i[2]; / number of bits handled mod 2^64 / ULONG buf[4]; / scratch buffer / unsigned char in[64]; / input buffer / unsigned char digest[16]; / actual digest after MD5Final call / } MD5_CTX;
#define MD5DIGESTLEN 16
#define PROTO_LIST(list) list
/*
- MTS: Each of these assumes MD5_CTX is locked against simultaneous use. / typedef void (WINAPI PMD5Init) PROTO_LIST ((MD5_CTX )); typedef void (WINAPI PMD5Update) PROTO_LIST ((MD5_CTX , const unsigned char , unsigned int)); typedef void (WINAPI PMD5Final )PROTO_LIST ((MD5_CTX ));
PMD5Init MD5Init = NULL; PMD5Update MD5Update = NULL; PMD5Final MD5Final = NULL;
const char Hex2ASC(const BYTE Hex, int Len) { static char ASC[4096 * 2]; int i;
for (i = 0; i < Len; i++)
{
ASC[i * 2] = "0123456789ABCDEF"[Hex[i] >> 4];
ASC[i * 2 + 1] = "0123456789ABCDEF"[Hex[i] & 0x0F];
}
ASC[i * 2] = '\0';
return ASC;
}
int main() { MD5_CTX ctx; unsigned char buf[10] = “Xiaozhou”; HINSTANCE hDLL;
if ( (hDLL = LoadLibrary("advapi32.dll")) > 0 )
{
MD5Init = (PMD5Init)GetProcAddress(hDLL,"MD5Init");
MD5Update = (PMD5Update)GetProcAddress(hDLL,"MD5Update");
MD5Final = (PMD5Final)GetProcAddress(hDLL,"MD5Final");
MD5Init(&ctx;);
MD5Update(&ctx;,buf,8);
MD5Final(&ctx;);
printf("%s \n",Hex2ASC(ctx.digest,16));
}
return 0;
}
关于Resize的话题
今天在codeproject上面找了些关于Resize的时候,控件自动布局的话题。
把地址贴在这里,作个记号。
http://www.codeproject.com/dialog/RPResizeDlg.asp http://www.codeproject.com/useritems/SizingDialog.asp http://www.codeproject.com/dialog/easysize.asp http://www.codeproject.com/dialog/dlgresizearticle.asp http://www.codeproject.com/dialog/resizectrl.asp http://www.codeproject.com/docking/AutoResizingControls.asp http://www.codeproject.com/dialog/formview2.asp
MSXML读写的例子
1、目标文档:
lizlex
XML Developer's Guide
2、步骤:
(1)在StdAfx.h中引入动态链接库 MSXML.DLL(C:\windows\system32\msxml4.dll)
#import
(2)界面设计: 分别放入三个Text,用于输入数据,与显示文档内容用,并添加关联的成员变量m_strId,m_strAuthor, m_strTitle;并添加确定按钮:
(3)产生文档的程序片断 void CXmlparseDlg::OnButtonGenerate() { UpdateData();
MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ;
//创建DOMDocument对象
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if(!SUCCEEDED(hr)) { MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”); return ; }
//根节点的名称为Book //创建元素并添加到文档中 xmlRoot=pDoc->createElement((_bstr_t)”Book”);
//设置属性 xmlRoot->setAttribute(“id”,(const char *)m_strId); pDoc->appendChild(xmlRoot); MSXML2::IXMLDOMElementPtr pNode;
//添加“author”元素 pNode=pDoc->createElement((_bstr_t)”Author”); pNode->Puttext((_bstr_t)(const char *)m_strAuthor); xmlRoot->appendChild(pNode);
//添加“Title”元素 pNode=pDoc->createElement(“Title”); pNode->Puttext((const char *)m_strTitle); xmlRoot->appendChild(pNode);
//保存到文件 //如果不存在就建立,存在就覆盖 pDoc->save(“d:\he.xml”);
}
(4)读取XML文档的程序片断 void CXmlparseDlg::OnButtonLoad() { MSXML2::IXMLDOMDocumentPtr pDoc; HRESULT hr; hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if(FAILED(hr)) { MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”); return ; }
//加载文件 pDoc->load(“d:\he.xml”);
MSXML2::IXMLDOMNodePtr pNode;
//在树中查找名为Book的节点,”//“表示在任意一层查找 pNode=pDoc->selectSingleNode(“//Book”);
MSXML2::DOMNodeType nodeType;
//得到节点类型 pNode->get_nodeType(&nodeType;);
//节点名称 CString strName;
strName=(char *)pNode->GetnodeName();
//节点属性,放在链表中 MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL; MSXML2::IXMLDOMNodePtr pAttrItem; _variant_t variantvalue; pNode->get_attributes(&pAttrMap;);
long count; count=pAttrMap->get_length(&count;);
pAttrMap->get_item(0,&pAttrItem;); //取得节点的值 pAttrItem->get_nodeTypedvalue(&variantvalue;); m_strId=(char *)(_bstr_t)variantvalue;
UpdateData(FALSE);
}
BLOG更新
前段时间,有人在主站的留言本上发广告连接,后来我修改了留言本的代码,屏蔽了链接内容。广告也少了。可是好景不长,发广告的人,又把目标转向了我的BLOG。。。。。我最气愤那些发广告的人,收了别人的钱,专门为别人加广告链接,为的是提高雇主的Google Page Rank。本来与我不相干的,可是你这样赚钱也太没良心了把。利己,但是却损了人。更可恶的是,让搜索引擎充满了垃圾。大大降低搜索效率。对此,对那些赚昧心钱的人,表示强烈的鄙视!!![lol]
垃圾广告的战火已经波及到我的BLOG。我决不姑息。今天又改了BLOG评论的ASP代码(虽然我ASP很久没用了。有点生疏,但是……天才总是什么一学就会的。哈哈)。BLOG屏蔽了广告链接的一些关键字。现在是凌晨1点多。(都是你们这些发垃圾广告的害的!![twisted])
本站宣言:抵抗垃圾广告到底,绝不姑息!!
VC中用Flash Control播放FLASH
project-》add to project-》components and controls
选择插入Shockwave Flash Object 控件。
工程中插入一个CShockwaveFlash类
然后,就可以定义一个CShockwaveFlash类的实例 CShockwaveFlash m_flash; m_flash.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(0,0,200,200),this,2000); m_flash.LoadMovie(“swf文件绝对路径”); m_flash.Play();
I like shopping
在MS的ecompany shop买了一堆东西。期待我的蓝牙套件。以下是购物清单:
Original Line Items Your 6 original line items are: Item # Description Qty Status Price
- MIC23019600 GrandPaws Brown Plush Bear 1 Shipped $14.99
- MIC12014000 MSN Tumbler Orange 1 Shipped $6.99
- MIC29041800 OpticalDsktp Elite Bluetooth 1 Shipped $100.00
- MIC12016700 Revolutions Blue Tumbler 1 Shipped $14.99
- MIC12012700 Stainless Steel Blue Tumbler 1 Shipped $6.99
- MIC12009900 Xbox Plastic Insulated Tumbler 1 Shipped $6.00
Subtotal: $149.96
我们的海关??无语。。。。
MVP的礼品包今天才收到。今天在DHL上查了下跟踪信息。10月17号就从美国出发了。3天后,就到了中国。但是中途,因为海关的清关,以及清关延误,今天才收到包裹,看了看,已经是11月5号了。
DHL的快递从美国到中国,只要了3天,可是我们的海关,居然费了15天。。。。。 这是一次意外,还是巧合???[confused][confused][confused]我无语。。。。。。。
下面是我的包裹的跟踪信息。 最后居然转给了第三方投递,原来是中国邮政。呵呵。。。 =============================================
这些是您查找的结果
提供的时间是已记录的快件检查点中到达服务区域的当地时间。
运单号码 发件地服务区域 目的地服务区域 状态
7458448620 Bothell, WA - USA East China Area - China, People's Republic 由于收件人地址有误, 快件无法派送
7458448620 - 详细报告
日期 时间 地点服务区域 检查点详细信息
十月 17, 2005 16:58 Bothell, WA - USA 快件已从发件人处提取
十月 17, 2005 17:41 Bothell, WA - USA 已离开发件地
十月 19, 2005 00:34 Los Angeles Gateway, CA - USA 已从DHL发件地出口 Los Angeles Gateway - USA
十月 19, 2005 03:10 Los Angeles Gateway, CA - USA 快件已在转运途中 Los Angeles Gateway - USA
十月 20, 2005 22:33 East China Area - China, People’s Republic 快件到达转运地 East China Area - China, People’s Republic
十月 20, 2005 22:33 East China Area - China, People’s Republic 快件已到达收件地海关,正在等候清关 East China Area - China, People’s Republic
十月 21, 2005 03:42 East China Area - China, People’s Republic 清关延误
十月 21, 2005 09:59 East China Area - China, People’s Republic 由于服务区域代码错误,快件已转运到正确收件地
十月 22, 2005 01:22 East China Area - China, People’s Republic 清关延误
十月 23, 2005 01:17 East China Area - China, People’s Republic 清关延误
十月 25, 2005 03:20 East China Area - China, People’s Republic 清关延误
十月 26, 2005 01:44 East China Area - China, People’s Republic 清关延误
十月 27, 2005 02:37 East China Area - China, People’s Republic 清关延误
十月 28, 2005 03:30 East China Area - China, People’s Republic 清关延误
十月 28, 2005 15:49 East China Area - China, People’s Republic 快件已从海关放行 East China Area - China, People’s Republic
十月 28, 2005 17:12 East China Area - China, People’s Republic 已从DHL发件地出口 East China Area - China, People’s Republic
十月 30, 2005 07:02 Hong Kong - Hub - Hong Kong 已从DHL发件地出口 Hong Kong - Hub - Hong Kong
十月 31, 2005 10:47 Chengdu - China, People’s Republic 快件到达转运地 Chengdu - China, People’s Republic
十月 31, 2005 10:47 Chengdu - China, People’s Republic 快件已到达收件地海关,正在等候清关 Chengdu - China, People’s Republic
十月 31, 2005 17:19 Chengdu - China, People’s Republic 快件正在清关中
十一月 01, 2005 17:07 Chengdu - China, People’s Republic 快件正在清关中
十一月 02, 2005 16:48 Chengdu - China, People’s Republic 快件正在清关中
十一月 03, 2005 11:37 Chengdu - China, People’s Republic 快件已从海关放行 Chengdu - China, People’s Republic
十一月 03, 2005 11:54 Chengdu - China, People’s Republic 已从DHL发件地出口 Chengdu - China, People’s Republic
十一月 03, 2005 13:07 Chengdu - China, People’s Republic 快件到达目的地国家
十一月 03, 2005 13:46 Chengdu - China, People’s Republic 快件转由第三方派送,无法提供派送结果
十一月 04, 2005 14:50 Chengdu - China, People’s Republic
无题
最近几天对网络服务器的设计比较感兴趣,比如各种网络模型,数据传输……等等 想做一个支持多人的信息、文件传输的一套C/S程序。咳咳~~ 之后我就会开始设计了,正在想给这个软件改个什么名字。HOHO~~[biggrin]
MVP的礼物现在还没有收到,唉~~先是被上海的海关卡住,后来又被成都海关卡住~~ 最后看到的追踪信息是转交给第三方办理了?DHL有第三方?难道是中国邮政??汗……[confused]
最近老是有人在我的网站(VC源动力)的留言本发广告URL,就是为了提高GOOGLE的page rank? 这样也太不对了吧?[rolleyes]为了提高自己的pr,扰乱本站的秩序,严重BS!![cool]。更不好的是让google充斥这些广告,大大降低了搜索效率。我索性把留言本提交的asp脚本加入了留言过滤,凡是带网页链接的留言通通挡获。(嘿嘿)。好像颇有成效。今天起来看了网页,已经没广告URL了。
牢骚发完了,继续工作、学习。。。