程序设计之路

原创 2003年09月10日 11:08:00

程序设计之路[Road of Programming]
    小学时便知道计算机,认为是一个神秘莫测的东西,只有高智商的人才知道如何与显示器“说话”;
    初中时知道了程序员,一个很神圣的工作,需要很高的学历和智商;
    高中时第一次摸了摸计算机的键盘,说不出的感觉;
    大学开始真正接触计算机,在Dos下使用Borland Turbo Pascal写下了人生第一个程序;
   
    在今时今日,计算机已经很普通了,小学生也熟练的操作着计算机(十几岁就写下天才程序的神童
们更是让我汗颜)。程序员也很普通了,Visual Basic把程序设计带入了普通大众的工作学习甚至娱乐
中(Microsof 功不可没)。尽管如此,还是有很多朋友想成为一名程序员(不管你的目的是什么,炫耀
或是成就自我),在RAD开发工具的带动下,你写程序的愿望得到最快速的实现,你的“成绩”让你不止一
次的欢呼雀跃。

    在RAD开发工具中,如Visual Basic,你不需要写一行代码就可以生成一个Windows环境下标准的窗体(
当然它什么也不做),而在没有RAD工具和RAD工具刚刚开始萌芽的时候,程序员为了在Windows下面创建这样
一个窗体颇费周折,更早的时候,程序员为了在Dos下面写一个类似Turbo C 或 Turbo Pascal 的IDE(只是生成
一个什么也不做的IDE,就需要1000-2000行代码)。程序设计是一个艰苦的过程(求伯君设计WPS的过程
就是一个例证),在今天很多朋友热衷于去追逐最新的技术、技巧,这本是没有错的,但需要你有扎实的
基本功。比如,将程序图标最小化到系统托盘是一个常用的技巧,一般来讲,你不会只是为了这样做而这样做,
你还会在实现这一功能的同时实现鼠标双击、单击该图标(左键或右键)调出指定窗体、弹出菜单等操作。实现这
一功能的最简便方法应该是使用他人已经写好的组件,但不够灵活。更多的时候,我们是自己调用 Windows API
来实现这一功能的,灵活但麻烦一些。在C#中这个问题得到了较好的解决。在C#中,有一个NotifyIcon控件和
NotifyIcon类(System.Windows.Fomrs.NotifyIcon),使用它们可以轻松的满足你的要求。那么在此之前程序员
是如何完成这一功能的呢?在 Windows SDK 下,程序员用到了Shell_NotifyIcon()这个API函数(其原型为:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

    DWORD dwMessage,         // message identifier
    PNOTIFYICONDATA pnid // pointer to structure
   );),
并且要为此函数的pnid参数进行赋值(其原型为:
typedef struct _NOTIFYICONDATA { // nid 
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    char szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;
),然后你才可以在你的程序中成功调用此API,完成你的功能。为了能够响应你的鼠标事件(实现鼠标双击、
单击该图标(左键或右键)调出指定窗体、弹出菜单等操作),你要映射鼠标相应的消息,然后在其中加入你
想要它执行的操作。这样就完成了一个简单的系统托盘程序。相比较而言,使用C#要简单一些。

    我们不是为了追逐最新的流行的技术才写程序的,学习最新的技术可以使我们的程序设计的理念得到提高,
使程序在更为广泛的领域得到应用,让我们的付出得到最大的收获。当然不是为了向别人炫耀。

    学习的过程不是一蹴而就的,它需要长期的历练、积累和沉淀,特别是软件开发。心浮气躁、急功近利是
万万不可取的。当我们在学习新的技术时我们应该更深的去理解该技术的原理,当我们应用一种技巧时应当不
仅知其然也要知其所以然。C#中实现系统托盘技巧之所以简单是因为 NotifyIcon类中封装了大部分在此之前需要
自己手工完成的东西,微软为我们做的越多,我们使用起来也就越方便。不知其所以然,你也可以完成一定的
功能,但不会成为一名合格的程序员,合格的程序员必须知其所以然。

    新的开发工具(语言)大大提高了我们的工作效率,但要在实际中应用好它们是不容易的。学以致用是软件开
发不变的宗旨。
    程序设计之路一定不平坦,需要你有足够的耐心和毅力。

架构师之路16年精选50篇

2016精选索引,点击标题阅读相关文章。 【方法论】 《秒杀系统架构优化思路》 《分布式ID生成器》 《互联网架构,如何进行容量设计》 《线程数究竟设多少合理》 《单点系统架构的可...
  • a314773862
  • a314773862
  • 2017年02月13日 19:05
  • 4829

我的Java学习之路

  将近两个月的时间没有更新过博客了,这个东西还是不能断,以后要坚持按时更新。这段时间主要在学习Java编程方面的知识,之前自己主要是通过C++来做图像,技多不压身,学习了一个月,再次写一篇博客来...
  • u013088062
  • u013088062
  • 2016年06月15日 23:19
  • 3313

一.求生之路2服务器的搭建(Windows)

下载游戏1.先去下载个在服务器上下载游戏的工具.(服务器不用安装Steam客户端)所以要借助这个工具SteamCMD 下载steamCMD的网站 直接下载steamCMD的压缩包 2.解压出来 3....
  • u013792369
  • u013792369
  • 2016年11月05日 10:25
  • 7247

python自动化之路-day2

本节内容: for循环while循环数据类型(字符串、数字、列表、字典、元组) for循环 1.介绍 python中循环大多数都是用for来完成,for循环是一种迭代循环机制不...
  • zongyimin
  • zongyimin
  • 2016年10月17日 11:07
  • 383

架构师之路16年精选50篇

来源:http://mp.weixin.qq.com/s/OlFKpcnBOgcPZmjvdzCCiA 【方法论】 《秒杀系统架构优化思路》 《分布式ID生成器》 ...
  • neo_liu0000
  • neo_liu0000
  • 2017年02月19日 10:54
  • 426

我的Java成长之路

Java我最热爱的一门编程语言--分享我的Java学习之路       从2011年上大学开始我接触的第一门计算语言就是Java,它所带给我的感觉是很好的!从一开始接触它,我就已经喜欢上了这门编程语言...
  • JavaChenZhenlin
  • JavaChenZhenlin
  • 2013年06月15日 00:36
  • 1177

求生之路2服务器指令比较全

bind "b" "say !buy"  绑定 // 远程连接密码 rcon_password 256 net_graph 1 游戏显示FPS+ping的命令 打开控制台输入Sv_Cheats...
  • qq_30274105
  • qq_30274105
  • 2016年08月23日 09:58
  • 7666

一名C++程序员的成长之路

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。   2.初学者请不要看太多太多的书那会误人子弟的,先找本系统...
  • wo17fang
  • wo17fang
  • 2015年06月06日 10:58
  • 951

【JS进阶之路】JavaScript之入门初识

在学习JavaScript之前先来了解一下它的概念以及历史,这些内容我们在开始也都学习到了:   JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解...
  • u013058618
  • u013058618
  • 2015年08月16日 12:00
  • 637

我的大学之路---《大学之路》读后感

吴军老师《大学之路》读后感。
  • zhouzxi
  • zhouzxi
  • 2015年11月13日 17:26
  • 4181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序设计之路
举报原因:
原因补充:

(最多只允许输入30个字)