cheney 的个人资料我的读研生活照片日志列表 工具 帮助

日志


6月2日

无聊

开始上班工作了,很多人开始说,我会胖起来。可是,现在上班都快一年了,我发现自己并没有实现这个目标。想胖一点,这还真是我的一个难题。但是,我发现我有一点却有长进,那就是——无聊,不思进取。上班是一种氛围,如同读书一样,大部分人在工作的环境中还是很懒散的,很放纵自己的,而人在不自觉中就受到这种氛围的感染,而让自己消沉。由此,我不用的想起一件事情,为什么在公司上班的朋友能够不断的提高自己的技术水平,而在单位上班的人却在颐养天年。其关键在于一点,有没有珍惜自己的时间,在任何时候都当成机遇去把握,好好的思考问题,思考所处于的环境,并不断的努力来改变所处的境遇。

总之,我认为,努力比起环境更加重要,在任何时候和任何岗位,都离不开自己的努力。

5月30日

暗度陈仓

 

局里的一把手陈局长文化不高,却喜好舞文弄墨。我是单位的秘书,写出的材料,他都要把关审阅,而且每次都要删改。每次都把我那一份好端端的材料弄得支离破碎,面目全非。我的声誉与仕途也受到了影响。

对此我无能为力。在单位里,一把手的话就是圣旨。

这一日,上级要一份重要材料,我对此极其慎重,字斟句酌,殚精竭虑,费了好大的力气,终于完成了。

在交给陈局长审阅之前,我看着自己的得意之作着实犯了愁。我知道经过他的审阅后,势必把材料删改得凌乱不堪,面目全非。

可不让他审阅,那又是不可能的。

下班回到家,我茶不思,饭不想,闷闷不乐地坐在那里发愁。此时,与我交往甚密的老宋正好来串门,见状便问其详,我向他倾诉。

他思忖了一会儿道:“我有一计,你不妨一试!”

他居然让我在材料里添上一小段让小学生都可以看出是多余的东西,然后让局长去删去改。我将信将疑。

结果竟如老宋所料。

一把手只是把我故意加的那一段删去了,我苦心孤诣起草的材料的本来面目保住了。

事后,我宴请老宋。

酒酣耳热之时,我问:“你怎么想到这么一个计策?”

他得意地说:“你想啊,你们局长有审阅删改材料的嗜好,你想阻止是不现实的。索性故意添上一段多余的文字让他去删改。这样既保住了他的颜面,又保证了材料的完好。告诉你,这叫‘暗度陈仓’。在生活中,有很多条途径可以抵达目标,而迂回则往往是巧妙的、隐秘的,也是最有效的!”

听君一席话,我连连点头。

5月29日

机关三大秘籍

读网友西瓜的一篇博文,感触很深。他将我多年在机关职场濡染的心情和感受都浓缩在这数百字当中了。看到有那么多人对公务员趋之若鹜,还有那么多的机关粉丝和红眼病,忍不住要将西瓜的大作转帖出来,共大家赏析与点评。

机关是什么?传统意义上,机关是办理公共事物、为人民服务的地方。然而在当今,机关恐怕不仅办事,还要办人。事怎么办?人怎么办?这都需要新的思维和新的方法。在政治功能和政治属性方面,现在机关的政治作用已日益加强,办事正逐渐“退居二线”。在社会属性上,机关就是一个社会,外面有的东西机关都有,不仅如此,机关的绝妙还在于表面单纯平静但内部复杂多变,像那波澜不惊的大海,你必须小心翼翼、认真对付。在学理上,机关更是博大精深,涉及政治生态、权力艺术、人际认知、关系互动等多方面知识,需要下工夫研究才能弄懂。总之,名称上机关还是那个机关,但内容上,机关已变成“机关”了。一个人若有机会在这种地方干上几年,那无疑将是人生的一段宝贵经历、宝贵时光。当然,如果要让这段宝贵时光发出光芒,按老师和书本上所教的套路操作恐怕不行,按领导台上的讲话要求更难行通。通过苦苦观察才知,在机关要有所作为,你必须具备三点看似悖论却奇效无比的本领。

第一、 有文化但不能学问太深。文化的作用显而易见,在知识型社会,没有一定的学历与教育背景很难立起足来,别说到机关,就是进工厂也不容易。然而,以为在机关知识越多越好那就大错特错了。机关就那些个事儿,能说会干再能写点材料已够使用。学问太深的人往往喜欢认死理,不懂得脑筋急转弯,缺乏适应官场风云多变的能力,这只会造成知识越多越反动。所以,机关那些八面玲珑深得领导喜欢的人,都是有一点文化但学问都不精深之人。这样的人才善于见风使舵,不至于像学究一样抓住道理不放,甚至写些狗屁文章理论半天,既单纯又可笑。所以记住,在机关没有知识不行,但知识太丰富变成了学问则只会成为包袱。通常来说,有三分知识装点门面足矣。

第二、有能力但水平不能太高。踌躇满志正处于上升时期的人,绝对没几个是水平出类拔萃者。道理很浅显,有水平的人会有个性也有脾气,他们会在上司面前装小?他们能把不同政见憋在心中烂掉?他们甘在庸官面前俯首?都不可能。不可能就意味着牺牲。所以在机关我们看到,官运亨通者大都是有点能力但能力并不足以构成水平的人,即使有些水平,你也一定会发现他在他的领导面前都会深藏起来,绝不轻易显现的。否则超过领导,领导的水平怎么体现?

第三、有关系但资源不能闲置。关系是工作的一切,也是一切的工作。机关就那几个岗位、那几个职务,你以为靠卖力工作就能争取?所以,在当今,机关中人没有什么关系是难有出头之日的,顶多也只能在一般岗位混个一般官职。我有位朋友在他供职的市委中,曾有三位一把手与他有些渊源,但他就是自恃清高不肯利用。有关系也懂关系,但就是拉不下脸面去利用关系,这恐怕是古今文化人的一种悲哀。关系是一种资源,浪费资源无疑是浪费机遇,而机遇一旦丧失,你就只有苦巴巴地干着,眼巴巴地看着,干巴巴地等着,什么好事也轮不上你。关系也是伯乐,你没见今日那“千里马”,有许多不都是通过关系的发现提携,才得以有机会在疆场上纵横驰骋吗?

5月28日

点、线、圆,机关工作秘笈

有些机关工作的同志,往往出力不讨好。做了不少事,却老出疵漏。把握不住到底该怎么办事?才能不出问题,不被领导批评。因此觉得机关工作太复杂。

前几天在某大军区机关工作的一位战友来昌,几位老战友聚在一起,谈起过去部队机关工作的话题。这位战友很有体会地说:哥们你当年总结的“机关工作点、线、圆工作法”,很管用。我现在虽然在大机关工作,还是牢牢记得老哥说的这个方法。几位战友们都附和:你这个点线圆总结得太精辟了!高,实在是高!

所谓机关工作点、线、圆工作法,是当年我站在一个普通机关干部的角度,总结机关办事程序上要坚持的三条原则:1、围绕一个“点”;2、踩稳一条“线”;3、画好一个“圆”。

围绕一个“点”:这个点,是指机关各处室的负责人。机关的处长,是机关工作的出发点,是处室工作展开的中心点,是整个机关工作运转中承上启下的关节点。处室成员的工作必须围绕这个点展开、进行和结束。如果把一个处室比喻为一个原子,处长是原子核,工作人员是围绕原子核运行的电子。工作人员必须根据处长的指令工作,接受处长的检查、指导、监督,完成处长交办的事项。脱离这个点,机关人员工作就会出力不讨好。

踩稳一条“线”:机关工作人员并不是封闭在一个处室里工作。要完成工作事项,要与上下左右发行联系。这种联系有线条指向各个不同的方位。机关工作人员要处理好这些联系的先后、主次关系,避免发生线条的交叉与缠绕。一般来说要走单一方向、单一线条。说具体些就是在一个时间段内只能与一个方向发生联系,要么是循序向上,要么是循序向下;不能一个方向的程序没有进行完,又转头与另一个方向发生联系。在一个方向上,按照由下而上、或由上而下逐级进行,一般情况不允许跳跃。同一时间只能与一个点发生联系,不要并行交叉。否则出现两个不同指令时,你就死定了。

画好一个“圆”:机关工作发起于哪个点,走过一圈程序后,最后应当归结这个点。工作可能发起于基层的一个要求,也可能发起于领导的一个指示。无论发起于哪里,处置完结后,对发起点必须最后作出答复。机关工作不可有始无终、不可半途而废。对每项工作都要画一个圆。

掌握了点、线、圆三原则,机关工作程序上基本上就不会出问题,就可以避免自己给自己找麻烦,可以少走甚至不走弯路。

2008年-株洲乘车指南:

①、市区线路:  
巴士  1路 1.00元 火车站 - 清石广场  
巴士 T1路 2.00元 火车站 - 清石广场[空调]  
发展  2路 1.00元 炎帝广场 - 车辆厂  
发展 T2路 2.00元 炎帝广场 - 车辆厂[CNG/油电混合/空调杨莉专线]
发展 S2路 1.00元 炎帝广场 - 向阳广场[双巴]  
发展  3路 1.00元 火车站 - 田心  
巴士  4路 1.00元 车站西路 - 南方外国语学校  
巴士  5路 1.00元 佳诚电脑手机市场 - 鸡头塘  
巴士 T5路 2.00元 佳诚电脑手机市场 - 鸡头塘[空调]  
发展  6路 3.00元 车站西路 - 马鞍山[有人售票]  
发展  7路 2.50元 车站西路 - 渌口汽车站  
发展 T7路 4.00元 车站西路 - 渌口汽车站[空调/大站]  
巴士  9路 1.00元 王塔冲 - 水泥厂(延伸:八一五油库)
发展  10路 1.00元 天元大桥东 - 曲尺  
发展  13路 2.50元 车站西路 - 青草冲[有人售票]  
发展  14路 2.50元 火车站 - 黄塘(仙庾岭)[有人售票]  
发展  16路 1.00元 泰山广场 - 市委党校  
巴士  17路 1.00元 佳诚电脑手机市场 - 明月湖小区(延伸:湖南工业大学)
巴士  18路 1.00元 庆云山庄 - 湘银小区(延伸:体育中心、北师大附中)
发展  19路 1.00元 火车站 - 起重设备厂  
巴士  20路 1.50元 清石广场 - 车辆厂  
巴士 T21路 2.00元 珠江花园 - 石峰区政府[空调]  
巴士  22路 1.50元 黄泥塘 - 摩托车大市场  
巴士  23路 1.00元 车站西路 - 五三机械厂  
巴士  25路 3.00元 火车站 - 大京风景区[有人售票/大京旅游专线]
巴士 T26路 2.00元 书香里 - 湖南工业大学[空调]  
巴士  27路 1.00元 煤气公司 - 霞湾  
巴士  28路 1.50元 炎帝广场 - 三三一医院  
巴士 T28路 2.00元 珠江花园 - 三三一医院[空调]  
■■  30路 1.00元 金山工业园-向阳广场-新华路-文化路-石宋大道-天元大桥-泰山广场
■■ T30路 2.00元 金山工业园-向阳广场-新华路-文化路-石宋大道-天元大桥-泰山广场[空调]
发展  32路 1.50元 天元超市 - 长岭  
巴士  33路 1.00元 庆云山庄 - 红旗广场  
发展  34路 1.50元 火车站 - 中南林学院  
发展 T34路 2.00元 火车站 - 中南林学院[空调]  
发展  35路 1.00元 炎帝广场 - 田心中门  
发展 T35路 2.00元 炎帝广场 - 田心中门[空调]  
发展  36路 1.00元 碧玉花园 - 三二○收费站  
发展  40路 1.00元 珠江花园 - 向阳广场  
巴士  41路 1.00元 佳诚电脑手机市场 - 天鹅花园  
发展  42路 1.00元 炎帝广场 - 株洲工学院  
巴士  43路 1.00元 天鹅花园 - 高家坳  
巴士 T45路 2.00元 珠江花园 - 清石广场[空调]  
巴士  48路 1.00元 湘滨逸墅 -六○一- 湘滨逸墅[环线]  
发展  49路 1.00元 炎帝广场 - 董家段高科园  
巴士  54路 1.00元 三三一粮店 - 董家段高科园  
巴士  55路 1.50元 清石广场 - 向阳广场
巴士 T55路 2.00元 清石广场 - 向阳广场  
发展  59路 1.00元 炎帝广场 - 香山美境(延伸:东湖路口)  
②、长株潭线路:  
CZT-102路 4.00元 株洲红旗广场 - 株易路口[空调]  
CZT-104路 5.00元 株洲佳诚电脑手机市场 - 湘潭砂子岭  
CZT-202路 14.00元 株洲红旗广场 - 长沙东塘[空调]  
③、郊县线路:  
(3.00元)湘运云田专线 钻石路长途汽车站-红旗广场-田心北门-云田
(2.00元)8路 摩托车大市场-白关-张公岭  
(?.00元)11路 红旗广场-交通铺
(2.50元)12路 摩托车大市场-白关-姚家坝  
(2.00元)15路 红旗广场-株浏路口-响塘-大观塘  
(1.50元)31路 炎帝广场-滨江路-马家河  
(1.50元)37路 佳城电脑手机市场-三三一-百井-宏夏桥-黄霞  
(3.00元)38路 红旗广场-北门-林学院-龙头铺-毛塘  
(2.00元)39路 清石广场-果园路-白马垅  
(2.00元)46路 红旗广场-太阳村-新市-龙洲-四三○  
(1.00元)47路 响石广场-田心北门-荷花-清石广场  
(1.00元)50路 响石广场-清石广场-劳教所  
(2.50元)51路 炎帝广场-王家坪-巷口山-群丰中学-妙泉-大坡、龙门寺  
(1.00元)52路 炎帝广场-王家坪-马家河中学-月塘收费站-马家河  
(2.50元)53路 炎帝广场-莲花小区-月塘-大石桥-金龙-大高-龙门寺  
社区线 果园广场-花果新村
?路 四三○-菱塘-青草坝  
?路 红旗广场-中南蔬菜市场-链条厂  
?路 炎帝广场-王家坪-巷口山-群丰中学-妙泉-栗山-新塘-江珼  
注意:  
  一、48路可以从“湘滨逸墅”坐到“湘滨逸墅”,起点坐到终点,原因是循环线路,那个“六○一生活区”终点站实际就是“茨菇塘派出所”;
  二、20路、55路、T45实际都是到“清石公交基地”(T45路新车就写明了终点是“清石基地”),估计是为了不造成清石广场堵车吧;
  三、40路、T21、T28、T45虽然终点有的是“珠江花园”、有的的“珠江丽园”,实际上都是一回事;
  四、炎帝广场往珠江南路过去一站,有的车报站是“石里嘴”、有的报站是“天元区建委”,实际是一个站点;
  五、“二医院”实际就是“响石广场”、“南方外国语学校”实际就是“南方公司”、“东都文化广场”实际就是“红旗广场”、“清石广场”就是“化校”、“恺德微创医院”就是“文化路口”、“华夏证券”就是“新华书店”、“五金机电市场”就是“杉木塘”
  六、“景文中学”站(景文中学已经不存在了)就是原来的“东苑宾馆”站;
  七、CZT-104路虽然株洲的终点是“南湖塘”,而实际是“佳诚电脑手机市场”;
  八、“黄塘”不是“黄泥塘”;
  [记得两年前有人在红旗广场向本人问路,说要去“黄塘”,那时20区终点是到“黄泥塘”的,刚好车开了过来,于是脑子蒙了就说了一句“上这趟车”,那人就上去了,还非常感谢本人。等那人上了车才想起来,应该坐14路才对的。呵呵!如今55路(20区)东边的终点改为“向阳广场”了,估计就不会闹误会了];
  九、“株洲工学院”是指湖南工业大学的本部、东校区,“湖南工业大学”是指其河西的新校区,“中南林学院”是指中南林业科技大学的株洲校区(学校更名太快,公交没跟进)。

12月29日

做人的工作

      用人,你就要相信他;但是,相信人有可能被人所骗。

      管理者需要人性化的工作,但又如何树立管理的执行力?

      工作,还有很多需要摸索......

12月28日

08年又一好消息

     又接到天天签证的消息,马上又有一个朋友要出国了。在这里,恭喜我的朋友,祝福我的朋友越飞越高。

变化

     同学告诉我,他在英国读博,消息来的突然,也来的让我振奋,这估计是我08年最后的最好的消息。
1月3日

感悟

其实,生活很简单,不需要天才般的思维,只要对生活中的每一件事情讲方法,而不是蛮干。你就能够取得很多的收获。这也是一个人从平凡中走出的必经之路。不要告诉自己,你不行,你没有优点,其实,你很优秀!努力,上帝会对每一个付出的人都是公平的。
1月2日

新年,新风貌!

告别了05,有很多可以值得回忆的。就让这一切都成为历史!在新的一年里,好好学习,天天上上!!
12月18日

重操旧业

很长一段时间没有教学生了 ,上午,实验室的一个同学给我介绍了一份家教。于是,晚上就教了一个高一的女生。还是挺有意思的,看到他们那么小,真有种自己很老的感觉。还好的是,上课比较顺利,学生比较聪明。希望能够把它教好,让她期末考试考个好成绩。挺诡异的是,我上玩一节课,她竟然猜到了我的星座,真不懂现在的小女生,呵呵!不过,好像也和我没有太大关系。作好的本职工作就够了.
<EMBED src=http://www.dabaoku.com/bjyinyue/mid/31.mid autostart="true" loop="true" width="80" height="20">

p2p技术简介

第一代P2P技术,也称为对等网络(PeertoPeer)结构,它的本质思想是,整个网络结构中不存在中心节点(或中心服务器),在P2P结构中,每一个节点(Peer)大都同时具有信息消费者、信息提供者和信息通讯等三方面的功能,在P2P网络中每一个节点所拥有的权利和义务都是对等的。
 
肖恩编写的Napster音乐交换软件正是基于这种P2P技术原理,每一个安装了Napster软件的电脑既是服务器又是客户端,当这台电脑联上网络后,你就能够搜索到另一台装有Napster软件电脑里的音乐文件,同时其他装有Napster软件的电脑也能连上你的电脑,进行搜索或下载。然而,Napster的P2P思想贯彻得并不彻底,基于运行效率的考虑,也为了更方便网友检索和交流音乐,Napster把所有的音乐文件地址都存放在一个集中的服务器中,Nap-ster的用户能够方便地过滤大量的地址,快速找到自己需要的MP3文件。也就是说,Napster的用户还是需要Napster公司的服务器这个中转站才能找到另外一台装有Napster的电脑。而这个服务器,正是由肖恩成立的Napster公司维护。

第二代P2P软件吸取了Napster的教训。1999年底,美国在线(AOL)的员工贾斯汀·弗兰克尔(JustinFrankel)发布了Gnutella。这个软件采用了一种新的文件交换网络技术,Gnutella不需要固定的服务器,使用者也不必进行注册,从理论上讲,只要打开Gnutella便能连上网络上的某台机器,用户发送的搜索请求在每一台电脑间来回传递,一直到找到文件为止,然后再将信息传回搜索者的电脑,这是一种真正意义上的对等分布式网络。由于没有真正的网络控制中心,FBI侦探和唱片公司律师永远都不知道该找谁的麻烦,美国上诉法院也认为,Gnutella和Napster不一样,这种软件的散播者,并未直接控制网络上所发生的行为,因而这种分布式网络是合法的。

但第二代P2P软件有个很大的问题,就是你很难分辨它与蚕食网络带宽的蠕虫病毒有何区别。就Gnutella而言,当数以百万计的搜索要求在网络上同时运行时,网络大塞车的情况就屡屡发生。幸运的是,Gnutella工程师改进了搜索处理方式,使搜索结果变成只限定于网络的某些人获得———例如,只有1万人,而不是200万人。
 
第三代P2P软件在节约带宽新技术中应运而生。这类软件进一步改进了搜索算法,如借鉴了“Google”等搜索引擎所常用的“快照”技术(SnapShot),然后把这些文件“快照”分布式地存放在网络上。当用户发出搜索指令的时候,搜索的要求是先到达网络上的任何一台电脑上,然后这台电脑就会再将它转到另一台有更多文件信息的电脑,第三台电脑可能就拥有文件本身———或者也可能再继续将搜索要求转到其他有正确信息的电脑。整个过程有点像在照着交通指示牌循序问路,而不是路上随便找个人问路,这样很大程度上提高了搜索效率,节约了带宽。在第三代P2P网络里,分布式存放的索引文件都会随着电脑及文件的加入而持续更新。
12月17日

今天是周末

久违的同学说到大学生活,感慨很多。大学生活很美好,很怀念。但是,现在,大家都工作了,压力很大,好像都比较郁闷。 我还算比较闲得一个人。下个学期就不会了,有很多事情要做了。
今天好好的背了背单词,觉得还好,考研的单词功底还算可以,过了一年了,还能够大概记得。要期末了,开了一下矩阵轮,很有意思,也很难的一门课程。要学好他。下午,去溜冰了,小卫子上场了 ,还真为他掐一把汗,不过,表现还好。扬言下个星期买溜冰鞋。
12月16日

又是一天

上午英语作试卷,感觉英语有点退化。命中率还可以,可是 ,速度太慢了。翻译好难!有挑战!下午的科学社会主义真是浪费时间,睡得我手都发麻!晚上看了 king of heaven,确实很经典。值得一看!
12月15日

成功的定义

真正的成功应是多元化的。成功可能是你创造了新的财富或技术,可能是你为他人带来了快乐,可能是你在工作岗位上得到了别人的信任,也可能是你找到了回归自我、与世无争的生活方式。每个人的成功都是独一无二的。所以,凌志军在其《成长》一书中得出的重要结论是“成为最好的你自己”。也就是说,成功不是要和别人相比,而是要了解自己,发掘自己的目标和兴趣,努力不懈地追求进步,让自己的每一天都比昨天更好。

积极主动的七个步骤

步骤一:拥有积极的态度,乐观面对人生

 

步骤二:远离被动的习惯,从小事做起

一、不要盲目听信人言,应冷静辨析,积极求证。

二、不要让事情找上你,应主动对事情施加影响。

三、不要习惯性地同意或追随别人,应当学会“有主见”。

四、不要说“我办不到”,应当积极去尝试。

五、使用语言下意识地训练自己。

 

步骤三:对自己负责,把握自己的命运

 

步骤四:积极尝试,邂逅机遇

 

步骤五:充分准备、把握机遇

 

步骤六:积极争取,创造机遇

 

步骤七:积极地推销自己

http://tech.sina.com.cn/i/2005-11-04/1701757463.shtml 

12月14日

Visual C++编程控制输入法

 

 

 Visual C++编程控制输入法

 

在Windows系统中一般都安装了至少三种输入法,在输入数据时常常会切换输入法,虽然Windows系统提供了切换快捷健,但对输入工作还是带来了不少麻烦。如果在应用程序中为用户提供智能输入法自动切换,那么这样的应用程序就显得更加专业、更加具有竞争力。不知你可用过Access,在表数据输入时Access自动切换输入法,如某字段需要输入英文时自动切换到En输入状态,如另一字段需要输入中文自动切换到某中文输入状态。

本文将对如何在Windows应用程序中动态的控制输入法的技术进行探讨。在DELPHI中许多控件都有控制输入法的属性,用户在设计时只要设置好这个属性就可以了,但在VC中并不直接提供对输入法的控制,要在VC应用中实现这种功能必须调用Windows API。在本文中我将用一个类将与输入法操作有关的Windows API函数进行封装,读者可以直接将这个类导入项目工程中,通过操作这个类来实现对输入法的控制,这样更适合于面向对象的开发。

要想控制输入法,首先要解决的问题是如果获得系统已安装的输入法信息。在Windows平台下,每个安装的输入法都在注册表中注册了相关信息。在HKEY_CURRENT_USER\keyboard layout\preload键下就可以找到这些信息,键下由以1为基的递增数字做为值名(暂取名为数字号),其值的内容是一个由八个数字组成的字符串(暂取名为代号,如"e0040804"),其中左4位是设备代码(device identifier),右4位是语言代码(language identifier)。例如上面:左e004指智能ABC,右0804指大陆中文。在MSDN中对所有代码做了详细的说明,如感兴趣请浏览MSDN相关内容。另外要说明一点的是在Windows98版本中输入法注册信息与上面说明略有不同,它是将已安装的输入法的数字号做为…\Preload下面的子键,而Windows2000将数字号做为…\Preload键下的值。

通过读取注册表中的输入法信息,可以列出所有已安装的输入法,但得到的输入法信息只是一些让人难懂的数字串,如何将这些数字串翻译成易懂的文字说明呢?同样,在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard  Layouts\"键下注册了这些信息,它的子键名为输入法代号(keyboard layout),内容为该输入法的ime文件,名称等信息。到此,我们已经了解了Windows系统控制输入法的原理知识,下面我们开始着手创建一个控制输入法的C++类,主要步骤如下:

                1. 创建一个新类,新类名为:CInputLanguage

                2. 新建一个保存输入法信息的结构。当加载系统已安装的输入法信息时,用一个此结构的链表来保存输入法信息。

                    struct IL{

                      char ilID[15]; //输入法代号。

                      char szName[100];//输入法的说明文字。

                      IL* pNext;

                    };

 

                3. 加入一个私有的成员变量

                 IL* m_pILHead;

                4. 加入加载输入法列表信息的成员函数

 

                    //此函数只针对Windows2000以上版本,如要在Windows98版本的代码请与笔者联系。

 

                    BOOL CInputLanguage::LoadInputLanguage()

                    {

                      HKEY hKey,hKey1;

                      DWORD cp=16;

                      char lp[15];

                      CString szID;

                      CString szKeyName,szKeyName1;

                      szKeyName = "Keyboard Layout\\Preload";

                      szKeyName1 = "System\\CurrentControlSet\\Control\\Keyboard Layouts\\";

                      int i=1;

                      szID.Format("%d",i);

                      DWORD lpT=REG_SZ;

                     

                    if(::RegOpenKey(HKEY_CURRENT_USER,szKeyName,&hKey)==ERROR_SUCCESS )           //(1): RegOpenKey

                      {

                       While(

                    ::RegQueryValueEx(hKey,szID,NULL,&lpT,(LPBYTE)lp,&cp) ==                     //(2) RegQueryValueEx

                    ERROR_SUCCESS )

                       {

                        CString szTempName;

                // 获取输入法类型的键值

                        szTempName = szKeyName1 + (LPCTSTR)(LPTSTR)lp;                                  

 

                    if(RegOpenKey(HKEY_LOCAL_MACHINE,szTempName,&hKey1)==ERROR_SUCCESS )

                        {

                         char lpD[100];

                         DWORD lpS=100;             //Data Size

                      if(RegQueryValueEx(hKey1,"Layout text",NULL,&lpT,(LPBYTE)lpD,&lpS)==ERROR_SUCCESS)

                         {

                          IL *p1,*p2;

                          p1 = m_pILHead;

                          p2 = new(IL);

                          strcpy(p2->ilID,lp);

                          strcpy(p2->szName,lpD);

                          p2->pNext = NULL;

                          if( p1 )

                          {

                           while( p1->pNext ){ p1 = p1->pNext ; }

                           p1->pNext = p2;

                          }

                          else

                          {

                           m_pILHead = p2;

                          }

                         }

                        }

                        ::RegCloseKey(hKey1);                 //(3):RegCloseKey

                        i++;

                        szID.Format("%d",i);

                       }

                      }

                      ::RegCloseKey(hKey);

                      return (m_pILHead != NULL );

                    }

 

                5. 加入选择输入法成员函数

                    BOOL CInputLanguage::SelectInputLanguage(IL *pIL)

 

                    {

                      if( !pIL ) return FALSE;

                       HKL hkl;

                       hkl=LoadKeyboardLayout(pIL->ilID,KLF_ACTIVATE);// (4)LoadKeyboardLayout装载输入法

                       if(hkl==NULL) return FALSE;

                       else{

                        ActivateKeyboardLayout(hkl,KLF_SETFORPROCESS);//(5)ActivateKeyboardLayout激活输入法

                       }

                       return TRUE;

                    }

 

                6. 其它部分

                    CInputLanguage::CInputLanguage()

 

                    {

                      m_pILHead = NULL;

                      LoadInputLanguage();

                    }

                    CInputLanguage::~CInputLanguage()

                    {

                      Clear();

                    }

                    //消除链表内存。

                    void CInputLanguage::Clear()

                    {

                      IL* p1,*p2;

                      p1 = m_pILHead;

                      while( p1 )

                      {

                       p2 = p1;

                       p1 = p1->pNext;

                       delete(p2);

                      }

                      m_pILHead = NULL;

                    }

                    //获得输入法信息链表头结点指针。

                    IL* CInputLanguage::GetInputLanguageList()

                    {

                      return m_pILHead;

                    }

 

使用此类时,只要将其头文件包括到要调用的文件中,调用GetInputLanguageList函数可以得到输入法信息链表的头结点指针,通过遍历此链表得到所有已安装的输入法的信息;通过SelectInputLanguage函数可以自由的控制输入法了。

12月13日

今天挨批了!

今天上午上英语课,下午,和师姐视频。原以为好好聊一聊过去的事情,叙旧一下!没有想到!把我好好的“批评”了一顿。说到要我把握好这个机会,多学点知识,不要糊涂过日子。也说到要我搞好人际关系,不要把自己孤立起来,建立自己的人际圈。还说了、、、、、、。总之,觉得她变了不少了,成熟多了,不再是那个和我嘻嘻哈哈的师姐了。师姐长大了。可惜,我还没有长大!
 
期末接近了,要为考试做点准备了,不能再和应用统计那样了。好好学习,天天上上!
 
今天把简历做好了,也算上个星期的一点成绩!有点惭愧!!