22号考完的试,23号晚上火车,第二天回到兰州.
回来几天基本上就是待家看书,潘爱民的COM原理与应用.还有一本COM与COM+从入门到精通,都是图书馆借的,偶尔看那么一点.
翻译了一篇Codeproject的小文章,关于VC控件子类化的,做为练习..草草阅读Codeproject的入门文章若干篇,有点小收获,慢慢总结文字吧.
目前正在用VC,SDK尝试写一个提示上机休息的timecount类型的软件,主要是我的表有这个功能,想做成能够显示LED风格时间的小玩具.SDK写出来应该会很小吧,写了一半,现在还在学习怎么用HDC..估计下周能写好吧.
回来忍受不了电脑的速度,上次重装到现在差不多一年多了吧.装了不少有的没的很多东西,只好重新装了一个xp,顺便装了个fedora8,算是wzc推荐的,偶尔可以换换口味..xp用了个ubuntu美化包.
今天查了考试成绩,这回分出的很快,分数从60多到80多,各有分布,还好都没挂,充分证明我们学校总评成绩中作业以及点名只占极小比例甚至不占.
娱乐方面,玩了几个小游戏,U148网推荐的短裤小子,COPY不走样,灵异行者推荐的passage(比较另类吧).
吃的方面,吃了不少,今天去阿西亚吃了羊排和羊羔肉吃得挺饱.
晚上准备看一个The Man from Earth..这周就是这样..下周继续
Powered by Zoundry
今天是表哥生日,也是2007最后一天..祝愿大家新年快乐..顺便小小总结一下,最近读书笔记什么的文章都没有发,因为有段时间飘飘的没了魂,以后会继续慢慢的发的.请高手多多帮助指点.
总结一下2007,总结一下自己:
我,87年生,已经满20岁了,没什么成就,爱好编程,会一些C/C++,Win32,C#之类的东西,生活还是没规律,还是一个人..
今年初姥姥病逝了,比较悲痛..其他还好,十一同好友chz去了一趟长沙,好友wzc在那读书,我们都爱好tech..
在西安读大三,学CS,在学校没学太多东西,自己随便看看一些编程书籍..今年参加过两次acm区域赛,都是做出几个简单题,做题速度慢,都没拿上牌,算法基础还有很大提升空间.今年看了几本书,win32多线程,win32核心编程看了大半,the old new thing,vc++技术内幕重新看了个大概,算法导论翻了一些,SQL语言的电子书,还有一些电子书都浅尝辄止了一下,有本win shell programming的电子书相当不错,看了一半,以后有机会还会看的..我现在对win32编程还是有很大兴趣,只是水平很烂,五一写了一个寝室查网速的软件用了MFC跟winpcap库,基本能勉强应用.觉得现在很多应用C#更容易用,不过shell extension估计还是c++好点,hook这些不知道别的语言怎么..学的内容还有很多呢..希望能得到前辈指点
年中开始接触豆瓣这样的web2.0网站,发现很不错,后来又用饭否,还有就是google reader,感觉网站程序原来也很神奇,以前对网站编程不怎么感兴趣以为不过是asp,php而已,好像现在很多web2.0网站都会用到python等动态语言,有可能还用c++做算法,可惜我C++只是懂个皮毛,python只了解简单语法写过很少代码..希望明年能再触类旁通一些..
想起10年前的我,拥有我的第一台电脑有了1年(96年有的第一台电脑),比较遗憾没有老师指点,只能够自己买一些杂志报纸学学,玩了好几年,只是会了些基本dos操作,win95应用,一些乱七八糟的应用软件都用过不少,那时候觉得写软件的人可真nb啊,记得那时候一个图标大战的小程序都觉得他很有趣.上初中接触到了现在的好友wzc跟chz,我们便在计算机方面相互交流,进步能快一点,学了一点vb应用,不过都没怎么练过手..之后是高中,转眼就过去了..回想过去的计算机之路,觉得大半时间是打了游戏,其他时间用来学习了它的周边,这10年大概只能算是个启蒙,希望我在以后的路上能和朋友们一起进步一起分享知识.
还想说很多废话,不过还是不说了..以后还是多说些实在的技术周边
07年:<天堂><长沙><WinSock><VIM><ACM><侄子><彭坦><dota><Google><*鱼><二十><尾巴>....很多很多..
今天晚上放了些炮,几个同班同学一起,炮在空中爆炸,看到难得见到的明亮星星,它一定是预示着未来的光明,但是它仍然离我很远...我希望能在新的一年里有所改变.
嗨皮牛业
昨天装sql server 2005,一进去安装界面就乱码了,找来找去发现是AppLocale的问题,有一个微软社区的解决方法,于是我删了AppLoc.tmp..发现安装界面正常了,结果安装过程中仍然偶尔冒出一些乱码..也没有多管..装完以后发现开始菜单是乱码,添加删除程序中也是乱码..虽然不影响太多使用,还是很不爽..
早上使用curl读取一个fanfou的rss,发现出现的也是乱码,不知道怎么搞的,卸载掉Applocale也没用,还是乱码...不过重装sql server这些的过程就再不出现乱码了...
问题仍待解决
这篇心得关于技术内幕第五章,比较的基础..
我是VC++的初学者
vc++技术内幕这本书我是去年暑假开始看的,那时候刚学windows编程,虽然之前用过c#,vb,不过都没怎么练习,这本书我大概看了前面的80%,不过都未曾动手,近日打算从头练习一下,在这里记些笔记
第五章第一个例子很简单
一个单文档MFC应用程序,View类中一个CRect类型变量保存矩形的信息,一个int型保存矩形颜色的属性
WM_LBUTTONDOWN响应函数判断单击左键时鼠标位置是不是在之前那个矩形区域内,是的话变换矩形颜色的属性,而且命令矩形区域重绘..
OnDraw()中用dc选取矩形颜色,绘制矩形的内切椭圆
应用的函数有:
virtual CGdiObject* CDC::SelectStockObject(
int nIndex
);//选取颜色,这里只选画刷大概有如下画刷
BLACK_BRUSH DKGRAY_BRUSH GRAY_BRUSH HOLLOW_BRUSH LTGRAY_BRUSH NULL_BRUSH WHITE_BRUSH
BOOL CDC::Ellipse(LPCRECT lpRect);//画矩形对应的内切椭圆
BOOL CRECT::PtInRect(
POINT point
) const throw( );//判断point是否在矩形中
注意一点就是CView::OnLButtonDown(UINT nFlags, CPoint point)
这里的Point坐标是View的client坐标,如果需要全局坐标需要转换
第二个例子关于映射模式
不同的映射模式,对应的坐标是有区别的,而且他们的逻辑单位比例都不同
固定比例的映射模式有
Mapping Mode
|
Logical Unit
|
MM_LOENGLISH
|
0.01 inch
|
MM_HIENGLISH
|
0.001 inch
|
MM_LOMETRIC
|
0.1 mm
|
MM_HIMETRIC
|
0.01 mm
|
MM_TWIPS
|
1/1440 inch
|
可变比例的映射模式
MM_ISOTROPIC and MM_ANISOTROPIC
我自己写了一个Demo看了一下,好像只有MM_ANISOTROPIC跟MM_TEXT是x轴左向右,y轴上到下,DC原点为0,0
其他的映射模式x轴一样,y轴变成了从下至上,DC原点还是0,0
CDC的几个函数这里有必要说说
virtual int CDC::SetMapMode(
int nMapMode
);
int CDC::GetMapMode() const;
设置/读取DC的映射模式
virtual CSize CDC::SetWindowExt(
int cx,
int cy
);//设置窗体范围
virtual CSize CDC::SetViewportExt(
int cx,
int cy
);//设置视口范围
virtual CPoint CDC::SetViewportOrg(
int x,
int y
);//设置(0,0)点的位置
窗体范围和视口范围的设置会影响可变比例映射
可变比例映射的x,y计算方法参看下面的公式
x scale factor = x viewport extent / x window extent
y scale factor = y viewport extent / y window extent
device x = logical x* x scale factor + x origin offset
device y = logical y* y scale factor + y origin offset
CDC成员函数的参数大都是用逻辑坐标,但是CWnd的成员却以设备坐标为参数
但是CDC成员中有函数
LPtoDP,将逻辑坐标转换为设备坐标
void LPtoDP( LPPOINT lpPoints, int nCount = 1 ) const; void LPtoDP( LPRECT lpRect ) const; void LPtoDP( LPSIZE lpSize ) const;
DPtoLP,刚好相反
void DPtoLP( LPPOINT lpPoints, int nCount = 1 ) const; void DPtoLP( LPRECT lpRect ) const; void DPtoLP( LPSIZE lpSize ) const;
第三个例子关于滚动条
文档视图的工程建立向导中可以让View继承自CScrollView,使得View带有滚动条
OnInitialUpdate函数在视图建立后,OnDraw执行之前执行,所以对于滚动条的初始化可以放在这个函数中
void CScrollingViewWindowView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 计算此视图的合计大小
sizeTotal.cx = 20000; //20cm
sizeTotal.cy = 30000; //30cm
CSize sizePage(sizeTotal.cx/2,sizeTotal.cy/2);
CSize sizeLine(sizeTotal.cx/50,sizeTotal.cy/50);
SetScrollSizes(MM_TEXT, sizeTotal,sizePage,sizeLine);
}
虽然是初始化了滚动条,但是不能够使用快捷键(上下左右,pagedown啥的),需要手动重载afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
需要用到CWnd::OnVScroll, CWnd::OnHScroll,分别控制纵向与横向两个滚动条
nSBCode
Specifies a scroll-bar code that indicates the user's scrolling request. This parameter can be one of the following:
· SB_BOTTOM Scroll to bottom.
· SB_ENDSCROLL End scroll.
· SB_LINEDOWN Scroll one line down.
· SB_LINEUP Scroll one line up.
· SB_PAGEDOWN Scroll one page down.
· SB_PAGEUP Scroll one page up.
· SB_THUMBPOSITION Scroll to the absolute position. The current position is provided in nPos.
· SB_THUMBTRACK Drag scroll box to specified position. The current position is provided in nPos.
· SB_TOP Scroll to top.
by gohan 11.23