Codejie's C++ Space

Using C++

吃了空:天书Putty


    周一来到M公司上班,除了不好意思和周围的人聊天外,倒也没有什么不舒服的地方。换个工作对我来说似乎跟换个项目做一样。至少目前感觉还。。。正常。
刚上班,除了看文档就是申请各种资源了,M果然是传说中的“大公司”,各个服务器的访问权限都需要走流程申请,且听说做这些工作的都是外包公司,就是说,可能给你解决问题的是个老外。。。这也是麻烦,时差啊,申请的访问权限的延迟长的要命。这中间我还弄错个申请,也没发,人家分得很细,发错了,就直接回你一个--‘can't understand‘,于是咱就得重来一边。唉,好怀念魔鬼做管理员的日子,一个电话,甚至吼上一句,什么访问权限啊,直接root口令就发过来了。。。

    看文档是件很无聊的事情,至少对我来说是这样,每次我只能坚持看20分钟,然后就会走神30分钟。。。为了让自己能安静坐着,就想着该写些代码,于是开始对Putty动刀了。。。Putty和SecureCRT一样,是用于远程访问的终端程序,只是Putty是free的,而SecureCRT是。。。被盗版的,至少目前我还没有碰到一个用正版SecureCRT的,哪怕是在M公司。。。当然我也一直是盗版SecureCRT的使用者,很好,很强大。现在M公司多数,应该说绝大多数都是正版的,咱也不好意思再用了,于是就换用魔鬼使用的Putty。
    Putty那叫一个“不方便”,没有Tab不说,你要不Paster那连Copy也没有。唉,都被SecureCRT惯坏了。于是也真是吃了空,下载了源码,就想着把Putty改成SecureCRT了。源码解压,不错,有VC工程,打开工程,登时晕了,全眼的.c文件。。。看到下面的代码,就知道添加Tab方式是没有指望了。。

void  listbox( struct  ctlpos  * cp,  char   * stext,
         
int  sid,  int  lid,  int  lines,  int  multi)
{
    RECT r;

    
if  (stext  !=  NULL)  {
    r.left 
=  GAPBETWEEN;
    r.top 
=  cp -> ypos;
    r.right 
=  cp -> width;
    r.bottom 
=  STATICHEIGHT;
    cp
-> ypos  +=  r.bottom  +  GAPWITHIN;
    doctl(cp, r, 
" STATIC " , WS_CHILD  |  WS_VISIBLE,  0 , stext, sid);
    }


    r.left 
=  GAPBETWEEN;
    r.top 
=  cp -> ypos;
    r.right 
=  cp -> width;
    r.bottom 
=  LISTHEIGHT  +  (lines  -   1 *  LISTINCREMENT;
    cp
-> ypos  +=  r.bottom  +  GAPBETWEEN;
    doctl(cp, r, 
" LISTBOX " ,
      WS_CHILD 
|  WS_VISIBLE  |  WS_TABSTOP  |  WS_VSCROLL  |
      LBS_NOTIFY 
|  LBS_HASSTRINGS  |  LBS_USETABSTOPS  |
      (multi 
?  LBS_MULTIPLESEL :  0 ),
      WS_EX_CLIENTEDGE, 
"" , lid);
}


    Putty的作者绝对是C的高人,甚至我都怀疑他应该是用ASM的,为了让大家好理解才用C来写的。。。。别的不说,其代码中涉及到的Windows控件部分的代码,全面都是直接调用API的,这让我等用惯了‘Window Designer'的人来说,那些代码堪比天书。。。Putty代码已经超出我理解范围了,但又有些不心甘,于是照猫画虎,添加了所谓的’Copy‘功能,聊以自慰。。。


<----丢脸的分割线---->
刚才跟同事说起此事,同事很诧异地说:“Copy功能怎么可能没有啊~”,并当场演示给我看,原来在Putty中,选择不Paste就是COPY!丢脸啊~不过Putty这个功能也说明了,以后不要没事在屏幕上乱选了,小心COPY哦~

 

posted on 2009-09-18 11:01 codejie 阅读(1416) 评论(4)  编辑 收藏 引用 所属分类: 随笔而已

评论

# re: 吃了空:天书Putty[未登录] 2009-09-19 01:16 Liu

你居然连Puty的paste功能都不知道?当年只有两键鼠标,我们华为同事统一使用puty就是因为他不需要用鼠标中键就可以拷贝粘贴特别方便。
左键选择就是copy,右键一点就是paste……

大哥,我一直很崇拜你的,太让我失望了  回复  更多评论   

# re: 吃了空:天书Putty[未登录] 2009-09-20 18:06 codejie

我也觉得狠丢脸。。。。大哥让你失望了。。。。  回复  更多评论   

# re: 吃了空:天书Putty 2009-09-23 23:57 白云深

呵呵,putty我就得比SecureCRT方便,尤其是复制粘贴,唯一美中不足的就是不支持标签页,不过我已经习惯用putty了,感觉没标签页也没什么不方便的。


另外,今天碰到了一个很诡异的问题,想请教一下。今天用VC7写了一个程序,我的系统是XP SP3,用release模式编译的,但拿到另外一台机器(win2K)上却跑不起来,也不报错,主函数也没进去,直接就退出了。因为程序的运行要有语音卡,所以我的机器是跑不起来的。但碰到这种死的不明不白的问题,不知道该怎么查,我在想是不是程序库有什么问题。后来又编了一个debug版本的程序,扔到那台有语音卡的机器上去跑了,这次可以跑了,但刚进主函数后,就崩溃了。我把怀疑有问题的代码拎了出来,在我自己上调试。调试后发现,编译成release版本的就没问题,如果编译成debug版本,程序一跑就崩了。之后我又试了一下,我以前做的那些windows下的程序(都是release版本),果然编译成debug版本的,一跑就崩。出问题的地方都是写日志的地方,写日志用的是log4cplus。不知道博主有没有碰到过类似的情况。
  回复  更多评论   

# re: 吃了空:天书Putty 2009-09-24 09:32 codejie

@白云深
先说Release和Debug两种模式编译出来的代码是不一样的,Debug模式偏向调试,含有更多的调试和检查信息,比如越界问题,而这些在Release版本上就都没有了,因此就可能发生Relase正常,而Debug不正常的现象,实际上当Debug不正常的时候,Release是跑在一中很危险的情况下。
对于XP和Win2K的问题,我怀疑是Dll的问题,这里建议你尝试使用VC做安装包的能力(VC可以做安装工程),做一个安装文件,然后在Win2K上安装,再运行试试。VC7好像是VC2002版本吧?现在的VC2008都对程序使用的DLL有检查了。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜