走近WTL--GDI篇

WTL中的GDI类的封装与MFC不同,对于这些类的详细描述,可以参见WTL for MFC Programmers, Part IX – GDI Classes, Common Dialogs, and Utility Classes.
在由MFC的GDI向WTL的GDI转换过程中,有以下几个问题需要注意的:

一、OnPaint函数的处理。
在OnPaint函数的声明中,有以下的两种方法:

BEGIN_MSG_MAP_EX(MyWnd)
....
MESSAGE_HANDLER(WM_PAINT, OnPaint)
...
END_MSG_MAP()
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

或者是:

BEGIN_MSG_MAP_EX(MyWnd)
....
MSG_WM_PAINT(OnPaint)
...
END_MSG_MAP()
LRESULT OnPaint(HDC hdc)

实际上,这两种写法在使用中区别不大,第一种传入的四个参数都不会用到,第二种传入的hdc的值是NULL,所以这些参数都是不可以被OnPaint函数使用。那么在OnPaint中如何开始绘图呢?我们可以使用CPaintDC,如下:

LRESULT HexxagonWnd::OnPaint(HDC hdc)
{
    CPaintDC    pDC(m_hWnd);
    CDCHandle  dc(pDC.m_hDC);
...
}

这样,我们就可以方便的使用CDCHandle了。这篇文章也对这个问题做了一定的说明,大家可以参考一下:WTL7.0的一个BUG

二、如何创建双缓冲
在WTL中CDC类被CDCHandle取代,其中对CBitmap的一些操作也有了变化。

CRect lcrcClient;
GetClientRect(&lcrcClient);
CDCHandle MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(dc,lcrcClient.Width(),lcrcClient.Height());
HBITMAP pOldBit=MemDC.SelectBitmap((HBITMAP)MemBitmap);

//使用MemDC绘制一些图像
....

dc.BitBlt(lcrcClient.left, lcrcClient.top,
    lcrcClient.Width(), lcrcClient.Height(),
    MemDC, lcrcClient.left, lcrcClient.top, SRCCOPY);

//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();

三、SelectObject函数的变化
WTL的几个select函数都是直接使用对应类型的GDI对象,并且传入参数为HPEN、HBRUSH等类型,如下所示:

HPEN SelectPen(HPEN nPen)
HBRUSH SelectBrush(HBRUSH nBrush)
HFONT SelectFont(HFONT nFont)

一般的CPen等可以通过HPEN操作符直接从CPen转换出HPEN对象,所以保存、恢复GDI对象的代码要做如下改变:

CPen lcPen;
lcPen.CreatePen(PS_SOLID, 1, gColorGreen);
HPEN lcpOldPen = dc.SelectPen((HPEN)lcPen);

dc.SelectPen((HPEN)lcpOldPen);

当然,WTL的GDI与MFC还有一些其他的不同,大家使用时应注意。

继续阅读走近WTL--GDI篇

Komm,Susser Tod

Komm,Susser Tod
来吧甜蜜的死亡
歌词:庵野秀明
作曲/曲:Shiro SAGISU
主唱:ARIANNE
录音:铃木恭一

[anyplayer:type=mp3 id=tonglei url=https://dl.dropbox.com/u/45626013/iceyer.net/15_Komm_susser_Tod.mp3 open=yes]


I know, I know I’ve let you down
I’ve been a fool to myself
I thought that I could
live for no one else
But now through all the hurt and pain
It’s time for me to respect
the ones you love
mean more than anything
So with sadness in my heart
I feel the best thing I could do
is end it all
and leave forever
what’s done is done it feels so bad
what once was happy now is sad
I’ll never love again
my world is ending

I wish that I could turn back time
cos now the guilt is all mine
can’t live without
the trust from those you love
I know we can’t forget the past
you can’t forget love and pride
because of that, it’s kill in me inside

It all returns to nothing,
it all comes
tumbling down, tumbling down,
tumbling down

It all returns to nothing,
I just keep
letting me donw, letting me down,
letting me down

in my heart of hearts
I know that I called never love again
I’ve lost everything
everything
everything that matters to me
matters in this world

I wish that I could turn back time
cos now the guilt is all mine
can’t live without
the trust from those you love
I know we can’t forget the past
you can’t forget love and pride
because of that, it’s kill in me inside

It all returns to nothing,
it all comes
tumbling down, tumbling down,
tumbling down
It all returns to nothing,
I just keep
letting me donw, letting me down,
letting me down

It all returns to nothing,
it just keeps
tumbling down, tumbling down,
tumbling down

It all returns to nothing,
I just keep
letting me down, letting me down,
letting me down

继续阅读Komm,Susser Tod

该死的教育网

  • Post author:
  • Post category:Web
  • Post comments:0评论

正如某句话所说,教育网是这个世界上不应该存在的东西,不过既然ChinaNet都日益壮大,来个EduNet又何妨。

无论如何,教育网基本访问不到外国的空间,不管是收费还是免费。无论如何,过年来买个国内空间好了,毕竟还得用上几年的教育网。

PS.教育网这东西果然只适合用来下载。

继续阅读该死的教育网

入手域名

  • Post author:
  • Post category:Web
  • Post comments:0评论

今天忙活了一天,就为了一个新域名。先是下了决心在新网买了iceyer.net的域名。过程还是一番风顺,不过买完查了一下whois信息,持有人是新网公司……不爽。恩等到期了直接转出墙去吧。

之后又开始寻找免费空间练习一下,根据自己以往的经历来看,由于是教育网,基本上国外的空间速度让人难以忍受,电信的童鞋可能会好些吧,教育网的童鞋还是别指望了。最后终于找到一家国内的还可以用的,就是:

白手起家 http://www.168.sh

这个空间比较适合于练手,电信速度不错,教育网同样登不上去。空间大小为168M,支持PHP,MySQL(10M),支持ftp管理;可以通过修改CNAME方式重定向来绑定域名。在上面安装WordPress倒是不错。价格是1.68元/年,相当于免费;另外会弹出广告(一天一个IP一次),但是会被一些浏览器屏蔽掉,相当于没有。

当然,对于仅希望建立Blog的童鞋来说,选一些服务商的WordPress也不错。比如:

www.blog.35.com

继续阅读入手域名

Moin安装手记

  • Post author:
  • Post category:Web
  • Post comments:0评论

这个Moin装的我异常纠结……

首先是安装Python2.6,然后下载Moin1.9(大家放狗搜吧)。

一开始的时候,想用Apache来跑Wiki,可惜老是有500的错误,十分郁闷。后来看《Lovely Python》的PCS时发现Moin自带了一个小型的Web服务端,就在wikiserver目录下,直接把moin文件改名为moin.py就可以了。
其他的就是配置Moin,大家继续放狗。

最后,把moin.py安装成服务,这个比较折磨人了。首先要借助一下instsrv.exesrvany.exe这两个程序了。

Step1 安装服务
以管理员权限启动一个命令行,输入
instsrv.exe ServiceName srvany.exe
也可以使用sc.exe来注册服务

Step2 编辑注册表,定制自己的服务
实际上,在Step1中注册的服务是一个空的服务,什么都没做,我们需要编辑注册表来定制自己的服务。 打开注册表,定位到
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesServiceName
在ServiceName下建立一个新的项,名为Parameters; 在Parameters项中新建一个字符串值,名为Application; Application的值为你要启动的脚本的绝对路径或者你要启动的程序路径。
例如我要启动一个moinmoin wiki 服务,那么Application的值可以为
D:Python26python.exe E:DevMoinWiKiservermoin server standalone
如果是一个脚本,可直接写为
D:StartWiki.bat

继续阅读Moin安装手记

  • Post author:
  • Post category:琐事
  • Post comments:2评论

弄过很多博客,但是没有一个能过长久的写下去。不是觉得那些服务商提供的Blog不够个性化,就是自己申请的国外空间惨遭GFW毒手,断断续续写了些东西,也没能存下来。或许表现并不重要,内容才是关键吧。

继续阅读

COM组件调试手记

程序调试是一个优秀程序员的必备品质。这几天正好在调试一个十分郁闷的大型项目,涉及COM组件,DLL调用等方面的知识,拿出来和大家分享一下吧。

一、项目环境
1.这种调试方法适用于VS2003平台。在其他如VS2005,VS2008等也应该适用,但并未测试。
2.项目的基本结构为:两个独立的工程,一个为COM接口的调用者,我们称为Master工程;另一个为COM接口的实现部分,为一个DLL,我们暂且称为ComImpl.

二、调试前提
1.必须拥有Master和ComImpl工程的源代码。
2.将由源码生成的exe、dll、pdb文件等必须要在同一文件夹下。
3.将VS2003加入到DEP保护的排除列表中,这一步十分重要,否则一旦开始调试,VS2003的IDE就会挂掉。

三、调试步骤
1.使用VS2003打开Master工程,在调用COM接口的代码处地方设置断点,启动调试。
2.等程序在调用COM接口的代码处被中断时,打开VS2003的Debug菜单下Processes对话框,attach到Dllhost.exe,关闭对话框。
3.在Master工程中打开ComImpl工程的源码,设置断点。
4.按F5或F10执行,直到ComImpl中的断点被捕获。

四、总结
实际上整个调试过程还算比较简单的,一般引起无法调试的原因无非是调试前提中的三点没有满足,特别是第三点一般很难有人会想到。

继续阅读COM组件调试手记

淘书

  • Post author:
  • Post category:琐事
  • Post comments:0评论

路过操场,许多即将离校的大四学长正在摆着地摊,出售着四年来伴随他们成长的零碎物品,这其中大多数是书籍,还有衣服玩偶之类。那些陪伴他们走过四年的点点滴滴,都这样渐渐的流传到学弟学妹们的手中,不知道这时的他们是不是还有些不舍呢?

路过时发现一本《基诺之旅》,绘本小说,想起某人高中时很迷恋这个一脸成熟的假小子,于是买了下来。顺便还买了一本EVA的资料设定集和凉宫春日的小说集,算是收获颇丰吧。

PS:某人居然把那本《基诺之旅》当成插画集了,完全无视上面的文字,无语中……

继续阅读淘书

The Theses of Cruel Angels

The Theses of Cruel Angels

[anyplayer:type=mp3 id=tonglei url=https://dl.dropbox.com/u/45626013/iceyer.net/14_The_Theses_of_Cruel_Angels.mp3 open=yes]

Songwriter : Nemuko OIKAWA
Composed by : Hidetoshi SATOHI
Arranged by : Toshiyuki OHMORI
Vocal : Yoko TAKAHASHI
(Star Child Record)

残酷的天使纲领
编曲:大森俊之
演唱:高桥洋子
作词:及川岷子
作曲:佐藤英敏

残〈ざん〉酷〈こく〉な天〈てん〉使〈し〉のように
就像那残酷的天使
少〈しょう〉年〈なん〉よ しんわになれ
少年啊,成为神话吧

あおいかぜがいま
迎面吹来苍茫的风 [注:“あお”在日语中可以写作“苍”和“青”,这里由于“青”的翻译没有什么意义,所以用了“苍”这种翻译。不过也有人将这句词翻译为:从蓝色的天空吹拂而下的风。]
胸〈むね〉のドアを叩〈たた〉いても
轻轻的扣击着你的心灵
私〈わたし〉だけをただみつめて
而你却凝视我
微〈ほほ〉笑〈え〉んでるあなた
静静的微笑
そっとふれるもの
悄悄地动摇了
もとめることにむちゅうで
不断追寻的梦中理想
うんめいさえまだ知〈し〉らない
却连命运也都无法自主的
いたいけな瞳〈ひとみ〉
可怜的眼神

だけどいつかきづくでしょう
总有一天,你会发觉
その背〈せな〉中〈か〉には
就在你的背后
遥〈はる〉か未〈み〉来〈らい〉めざすための
为飞向无尽的未来而生的
羽〈は〉根〈ね〉があること
翅膀的存在

残〈ざん〉酷〈こく〉な天〈てん〉使〈し〉のテーゼ
这是残酷天使的纲领
まどべからやがてとび立〈た〉つ
终于窗口边飞翔了出去
ほとばしるあついパトスで
迸发出热烈的情感
思〈おど〉い出〈で〉をうまぎるなら
连同回忆也一起违背
この宇宙(そら)をだいてかがやく
拥抱蓝天,散发出耀眼光辉
少〈しょう〉年〈なん〉よ しんわになれ
少年啊,成为神话吧
〈TV版到此为止〉

ずっと眠〈ねむ〉ってる
一直沉睡在,
私〈わたし〉のあいの揺〈ゆ〉りかご
我温暖的爱之摇篮之中
あなただけが ゆめの使〈し〉者〈しや〉に
直到你被称为被梦的使者
呼〈よ〉ばれる朝〈あさ〉がくる
在清晨唤醒
ほそい首〈くび〉筋〈すじ〉を
你的细细脖颈
月〈つき〉あかりが映〈うつ〉してる
被映照着明月的光辉
世〈つ〉界〈かい〉中〈ちゅう〉のときを止〈と〉めて
想止住世界的时间流逝
とじこめたいけど
想封闭住一切

もしもふたり逢〈あ〉えたことに
如果两人,在此相逢
意〈い〉味〈み〉があるなら
是有意义的话
私〈わたし〉はそう 自〈じ〉由〈ゆ〉を知〈し〉る
我就是这认知自由和知识
ためのバイブル
的圣经

残〈ざん〉酷〈こく〉な天〈てん〉使〈し〉のテーゼ
这是残酷的天使纲领
悲〈かな〉しみがそしてはじまる
悲伤的时刻由此开始
抱〈だ〉きしめた命〈いのち〉のかたち
化做拥抱生命的形式
そのゆめにめざめたとき
直到从梦中醒来
だれよりも光〈ひかり〉を放〈はな〉つ
比这一切都还要璀璨
少〈しょう〉年〈なん〉よ しんわになれ
少年啊!变成神话吧

人〈ひと〉はあいをつむぎながら
人们编织着爱
れきしをつくる
从而创造了历史
女〈めが〉神〈み〉なんてなれないまま
即使不能成为女神
私〈わたし〉は 生〈い〉きる
我却依然活着

残〈ざん〉酷〈こく〉な天〈てん〉使〈し〉のテーゼ
这是残酷天使的纲领
まどべからやがてとび立〈た〉つ
终于窗口边飞翔了出去
ほとばしるあついパトスで
迸发出热烈的情感
思〈おど〉い出〈で〉をうまぎるなら
连同回忆也一起违背
この宇宙(そら)をだいてかがやく
拥抱蓝天,散发出耀眼光辉
少〈しょう〉年〈なん〉よ しんわになれ
少年啊,成为神话吧

注:带有尖括号(“〈〉”)的假名是原歌词中没有的,只是为了不懂日语的朋友可以正确发音而做出的注音,带有圆括号(“()”) 的是原歌词中所带有的。

来源:【百度贴吧

继续阅读The Theses of Cruel Angels

重游校内网

  • Post author:
  • Post category:IceSee
  • Post comments:0评论

今天光了突然有了兴致,重新注册了一个校内帐号(以前那个自己删除了),其实只是想看看几个老朋友最近过的怎样。

登录后却发现L君的帐号已然不见,QQ上一问才知道他也同我一样,早就删号离去了。这令我不得不想一想SNS的用户黏度问题。像校内这种基于校友关系的社区网站,其用户亲和度是很高。想象一下,如果你周围所有同学都在玩校内,就你一个人在上MSN上晃悠,估计你也会很快被孤立吧。三年前校内刚出现时,其热度非凡,基本上周围同学人手一号,大有取QQ而代之的势头。可惜好景不长,没过多久上校内的人渐渐少了。到底是什么使的人们渐渐远离校内呢?

我想这无非有以下方面的原因:

1.隐私问题。校内网要求提供几乎真实的个人信息,这本是校内的亮点之一,不过并不是每个人都想让自己的个人信息暴露给众人。何况现在“人肉搜索”如此发达,校内网基本上是“人肉er”的首选信息源。

2.价值取向问题。校内网提供的的服务基本偏向于年轻人的娱乐应用,这并不符合所有人的胃口。很多人一开始可能会让觉得新奇,忍不住想要试试,但时间一久,他们也会渐渐失去兴趣,进而离开,不过校内网也在通过自己的应用程序来扩展其应用,丰富其内容。

3.其他传统通信软件的竞争,这里说传统主要是指QQ。可以说有网络的电脑,就可以上校内;但是没网络的电脑,也可能装有QQ。如今的QQ已然拥有国内甚至国际上最大的用户资源,校内网的用户基本上也同时是腾讯的用户,在腾讯提供相同质量服务(如腾讯的校友网)的情况下,很难说用户会选择那边。另一方面,校内网提供的信息交流功能,绝大多数QQ已经拥有,甚至QQ做的更好,用户更倾向与同别人进行即时聊天,而非通过校内来交流。

当然,校内网还是有它自己的的用户群,这种SNS社区网络也是当前网络发展的 一种潮流,不过要断言其前景,恐怕现在还为时过早。

继续阅读重游校内网