博文
寒假前想不到这么爽(2007-01-13 12:23:00)
摘要:寒假快到了,大部分其他专业的同学都忙着复习,大一的复习什么高数了,大英了,大二的搞什么物理了,线性代数了,我们大三的反而闲的要死。还真是想不通,不是都说大三忙的要死吗?怎么我们恰好相反?难道专业有问题?实际上还不只是这段时间闲,从半个学期前就开始闲了,因为只有专业选修课,于是同学们干什么的都有。有编编小程的,有打打游戏的,还有泡泡小妞的。
更好玩的都是,虽然是专业选修,考试还要考啊,但所有老师异口同声,“开卷”,同学们听了以后,简直像爆发了一般,场面极其火爆,有感叹老师总算变开明的,有赞扬学校考试制度的,还有吹着小曲不当回事的。本来嘛,大学里考试像小儿科一样,还开卷,岂不是逼着我们都通过?所以有一门我提前一个半小时交卷,甩门而去。闭卷的话考试前还要仔细复习一下,温习一下知识,开卷倒好,书都不用看,带到考场就完了。
于是这段时间准备趁闲做点什么出来。矢量图形差不多了,就差GIS空间分析了。当然还要有良好的数据组织和数据流。我要继续努力!!......
为什么这个值不能保存?(困惑)(2007-01-11 16:19:00)
摘要:在MFC编程中,我们对控件关联变量应该很清楚了,比如通过classwizard给编辑框设置一个关联变量,然后就可以调用了:
如: m_edit.SetWindowText("aa");
这是正确的。但是你也知道有另外一种方法,如:
GetDlgItem(IDC_EDIT1)- >SetWindowText("aa");
这也是正确的。
下面我还有一种写法,你认为正确吗?
首先定义一个成员变量
CEdit *p_edit;
然后响应WM _INITDIALOG:
BOOL Cmydlg:: OnInitDialog()
{
p_edit=(CEdit*)GetDlgItem(IDC_EDIT1);
p_edit->SetWindowText(" aa");
}
好像和上面的写法一摸一样啊,只是用一个指针变量来代替GetDlgItem()的返回值罢了,你这样认为吗?
很遗憾,错误!刚刚开始的时候,我想不通。只是先用一个变量来代替返回值,为什么会错误呢?难道这个函数GetDlgItem()的返回值有问题?
没办法,只好去查MSDN。此时我的心情是郁闷的,因为当你突然发现你平时认为很正确的理论或者技术竟然是错误的或者你的理解是不完整的,打击是非常大的。不光是对你能力的不肯定,还有一个原因是你把这个错误技术已经应用到很多领域,会造成多大的损失,实在不敢再往下想!
当然还有一种激动。因为我很快就要解开谜底了。最好这个谜底是对我以前的理解的补充,而不是全盘否定,那样的话我会疯了!还好如我所愿。
让我们来看看MSDN的说法:
CWnd::GetDlgItem
CWnd* GetDlgItem( int nID ) const;
void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;
Return Value
A pointer to the given control or child window......
(转)晋升中级软件工程师经验谈(2007-01-11 10:04:00)
摘要:今天公司的评选里,我被升为中级软件工程师了.很高兴(看来和我平时爱帮助新人有关哈哈),所以把自己学习的一些经验给新手们讲讲(高手千万别看.哈哈)
第一也是最重要的一点请一定要喜欢自己正在追求的道路,软件,只要你喜欢你就会有无穷的动力.回想我4年大学生活,其实也就今年才开始学编程,其他3年玩游戏了呵呵.可当我发现自己想做游戏,比想玩游戏还要强烈时,我努力的学各种知识.也算小有成就,帮助公司做了一个小型的图形引擎!而这一切正是来源我喜欢图形,喜欢编写软件.所以请新手门一定要喜欢自己的语言.不管那种!
第二不懂一定要问.而且是要多问,别怕丢脸.有什么丢脸的啊.但请记得任何问题一定是在自己思考过了不会在提.不要想都不想就发问.慢慢的你会发现自己已经是可以回答别人问题的人了!(友情提示)太难的,复杂的问题请不要问,当然是应为没人愿意回答复杂的问题(包括我),但更重要的是其实这远远超出你的能力了,你要做的不是叫别人帮你做一个复杂的问题,而是自己应该在去学了.因该发现自己不行了.要更努力的学.不要骂我们不愿意回答复杂的问题.我们也是人也有不会的,也怕麻烦,又不给钱谁愿意帮你免费做一个几白行的小软件啊呵呵!(别生气!只是说实话!)
第三尽快参加工作,你会发现比他奶奶的中国大学教育下懂的会多的多,真的大学你什么都学不到,那些老师也没有几个会编程的.全部都是说说.但是基础课程一定要学好!
c,数据结构,算法,离散数学,线形代数.够了真的够你每个月拿5000-10000了!其他及格就好!
笔者:好羡慕上面那位大哥啊!看了我都不想考研了,搞编程或者是软件开发的到底是应该考研啊还是尽早工作啊!
原贴地址:
http://www.programfan.com/club/showbbs.asp?id=154066......
歌词的含义(2007-01-11 09:53:00)
摘要:最近出了一首新歌,伊能静的念奴娇。歌词就是按照高中学过的苏轼的词 念奴娇改编的,唱的还很好听。当然里面还加了一些其他的成分。感觉就像诗人写的一首词。大概这就是歌词歌词的含义把。高中学生又可以有学习的版本了,呵呵
下面是歌词,有兴趣的可以听一听 哦
江山如此多娇
引无数英雄竞折腰
美人如此多娇
英雄连江山都不要
一颦一语如此温柔妖娇
再美的江山都比不上红颜一笑
像鸟一样捆绑
绑不住她年华
像繁华正盛开
挡不住她灿烂
少年英姿焕发
怎么想都是她
红尘反复来去
美人孤寂有谁问
大江东去浪淘尽千古风流人物
故垒西边人道是三国周郎赤壁
乱石崩云惊涛裂岸卷起千堆的雪
羽扇纶巾谈笑间强虏灰飞烟灭
江山如此多娇
引无数英雄竞折腰
美人如此多娇
英雄连江山都不要
一颦一语如此温柔妖娇
再美的江山都比不上红颜一笑
像鸟一样捆绑
绑不住她年华
像繁华正盛开
挡不住她灿烂
少年英姿焕发
怎么想都是她
红尘反复来去
美人孤寂有谁问
大江东去浪淘尽千古风流人物
故垒西边人道是三国周郎赤壁
乱石崩云惊涛裂岸卷起千堆的雪
羽扇纶巾谈笑间强虏灰飞烟灭
没有你爱不会有我
你已不在怎么偷活
一代一代美人像梦
梦醒之后只剩传说
江山如此多娇
引无数英雄竞折腰
美人如此多娇
英雄连江山都不要
一颦一语如此温柔妖娇
再美的江山都比不上红颜一笑
会眸一笑百媚生情
六宫粉黛颜色失去
春寒赐浴华清池洗
始是新承恩泽时期
云鬓花颜金步缓摇
芙蓉帐暖夜夜春宵
春宵苦短日阳高照
从此君王不早朝起
千古风流
都看今朝
把酒高歌
只需欢笑
谁还想明朝(多少豪杰)
只为红颜呀(将江山忘掉)
四面楚歌啊(江山哪比得上红颜花娇)
都能笑傲
九重城开烟尘升起
千乘万骑西南行军
六军不发无奈何矣
宛转峨嵋马前离去
君王掩面救不得矣
天长地久有时尽期
此恨绵绵可有绝期
你美啊美啊我退啊退......
MFC集合类学习笔记(2)(2007-01-10 20:51:00)
摘要:5.常用函数举例
(1) 数组
如int 数组:
CArray<int,int> m_intArray;
m_intArray.Add(15); // 添加一个元素
CArray<CPoint,CPoint> pArray;
pArray.Add(CPoint(10,10));
l 添加元素
注意,此时开始并没有分配数组的存储空间,但是add可以动态分配空间。如果可以预计数组大小,可以先用SetSize()来分配空间,因为如果频繁使用add,会产生内存碎片。SetSize可以增加数组元素,也可以减少,但是在减少时,并不会自动缩小保存数组数据的缓冲区,还是先调用removeAt先把元素删掉。
推荐使用:SetAtGrow(int index,ARG_TYPE newElement ),它与Add相比,就是可以利用它修改数组中的数组;而如果用add,那么必须先RemoveAll
l &nb......
MFC集合类学习笔记(1)(2007-01-10 20:50:00)
摘要:实际上集合类就是数据结构中的顺序存储结构和链表存储结构。它的优点就是建立这样的存储结构简单,并且把相关的操作集中成函数,方便用户的调用。比如顺序存储用到数组,如果要在数组中的固定位置添加一项,普通的方法就是要用一个for循环,有点烦琐。而在集合类中只要用一个add函数就完成了,相对简单一点。
数据结构是软件设计中的一个重要组成部分。因此我们有必要搞清楚集合类的相关问题。
1.3种类型
集合类中有3种大的类型:
(1) Array: 数组,可以动态的改变大小,有索引值和最大下标等。
(2) List:双向链表,无索引,链表有头尾,插入元素要比数组快。
(3) Map:是一种映射,俗名“字典”,是一种关联式数组。(在此不做讨论)
2.各自特点:
类型
是否有序
插入元素速度
搜索元素速度
索引
Array
有
慢
慢
有
List
有
快
慢
无
3.MFC中的集合类
类
是否使用模板
是否支持串行化
是否支持倾印
CArray
是
是
是
CTypedPtrArray
是
可能
是
CByteArray
否
是
是
CDWordArray
否
是
是
CObArray
否
是
是
CPtrArray
否
否
是
CStringArray
否
是
是
CWordArray
否
是
是
CUIntArray
否
否
是
CList
是
是
是
CTypedPtrList
是
......
(转)伤城看后感(2007-01-08 18:04:00)
摘要:伤城很有意思,拍的也很不错,可惜我们观众从一开始就知道了结局.我们知道了凶手梁,也能猜到那个酗酒的金最终会发现真相. 没有悬念.似乎现实就是如此,导演不必做作来可以制造悬念.
只是最后的结局有一点点吃惊.没想到会立即自杀.我在想如果梁不自杀,金会说出去吗?可能这种问题已经没有意义.因为有人说梁始终生活在仇恨中,现在仇报了,似乎活着也没了意义。至少金是这么想的。
似乎最后梁真的发现了真爱。为什么梁没有让徐马上死去呢?金知道吗?你知道吗?......
一生中遇到的十种人(2007-01-04 23:18:00)
摘要:1.遇到真爱的人,要努力争取和他相伴一生的机会,因为当他离去的时候,一切都来不及了.
2.遇到可相信朋友时,要好好和他相处,因为在人一生中,遇到知己真的不易.
3.遇到贵人时,要记得感激,因为他是你人生的转折点
4.遇到曾经爱过的人,记得感激他,因为是他让你更懂得爱.
5.遇到曾经恨过的人,要微笑向他打招呼,因为他让你更加坚强
6.遇到曾经背叛你的人时,要跟他好好聊聊,因为若不是他,今天你不能读不懂世界.
7.遇到曾经偷偷喜欢的人时要祝他幸福,因为你喜欢他时,不是喜欢他幸福快乐吗?
8.遇到匆匆离开你人生的人时,要谢谢他走过你的人生,因为他是你精彩回忆的一部分.
9.遇到曾经和你有误会的人时,要说清误会,因为你可能只有这一次机会了.
10.遇到和你相伴一生的人时,要百分感激他爱你,因为你们现在都得到幸福和真爱......
男人一生中要做的事(2007-01-04 23:09:00)
摘要:身为一个男人,你考虑过你这一生哪些事情必须做吗?是成家立业,还是吃喝玩乐?如果你没想过,那么现在真的应该考虑一下了.下面是转载的一篇文章来自读者文摘.
1.揽住母亲的肩头
当女儿家可以搂着母亲的脖子窃窃私语时,请揽住母亲的肩头,让母亲感觉到你结实有力的臂膀.
2.敬父亲一杯酒
当你成为一个男人的时候,请感恩地凝视父亲的双眼,斟满一杯酒,告诉父亲你无愧于他的儿子.
3.对你爱的女人说"我爱你"
你爱过几个女人酒说几身我爱你,这3个字不是你对别人的赐予,而是对自己灵魂的负责.
4.和另外一个男人打架
不需要理由!你是雄性动物!当一张可恶的脸出现时,瞄准部位,把拳头砸过去!(我不太同意哦!现在是文明社会,竞争更能显示实力!)
5.不要打女人
千万不要打,你不打,可能有人说你无能,你打了,你就真的无能.
6.有一个自己的孩子
你有很多的梦想没有实现,需要一个载体.
7.年轻的时候需要去漂泊
年轻时飘荡一段日子,这样老时就有精彩的故事可以回忆
8.有自己的一份事业
不需要理由!
每次看这些该做的事就感慨万千,什么大学生应该干的事啊,还有程序员应该有的素质等等,忍不住就会拿自己去比较一下,发现一下差距,然后去改进,总是有点收获.希望本篇也能给你以启迪!......
CListCtrl学习笔记(4)---中级篇(3)(2007-01-03 17:56:00)
摘要:
专题3:如何使列头响应右击消息?
我们知道在ClistCtrl中是可以响应列头单击的,如响应消息LVN_COLUMNCLICK,但是不能响应右击.怎么办呢?
(1)
实际上我们可以把CListCtrl(Report风格)看成由子窗口CHeaderCtrl和下面的视图组成,所以我们决定重写CHeaderCtrl.
派生一个类于CHeaderCtrl,响应右击:
void CMyHeadCtrl::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CHeaderCtrl::OnRButtonDown(nFlags, point);
}
在其中编写你想要的代码.这里完成了第一步.
(2)
此时还没有安装到ClistCtrl 上呢?想什么办法安装呢?以前在重写控件的时候,是通过在ClassWizard中定义变量来实现的,现在显然不行.因为ClistCtrl自己就是一个控件了.难道就没有办法了吗?
有.在CListCtrl中不是有个函数是GetHeaderCtrl吗?它不就是获得列头的指针吗?我们应该怎样利用它呢?
在想想子类化的方法:
如果我们重写了一个控件,如CMyEdit(派生于CEdit),现在要安装,除了在classwizard中安装以外,还可以在OnInitDialog中进行子类化:
.h:
CMyEdit m_edit;
.cpp:
m_edit.SubClassDlgItem(IDC_EDIT1,this);
(3) 回到我们这里的话题.显然不能用subclassDlgItem了,因为列头没有什么标识号,不过还可以用SubClassWindow,参数正好是一个句柄.
实现如下:
重写Cmylist(CListCtrl的派生类)虚函数:
void Cmylist::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base cla......