微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题梁肇新编程日记(1)
栏目软件世界
发布2001年46期
  2000年3月2日 星期四 多云
  今天的工作计划很明确,主要是完成以下3个方面:
  1.解决如何剪切/复制的功能
  2.改善操作显示
  3.预览窗的刷新处理
  在处理大眼睛的剪切和复制功能的时候,我并不知道是怎样实现的,要在大眼睛中进行剪切/复制,然后放到“资源管理器”中,或者进行相反的操作。为了实现这个功能,有两种方法:一、使用SPY来查看所有的消息处理;二、使用Softice查看函数的调用。
  复制和剪切除了基本的CF_HDROP外,还需要一个登记的类型。Performed DropEffect及Perferred DropEffect就是这种类型,我们分别将它们设置为2和1,各自表示CUT及COPY。其中,Perferred DropEffect为CFSTR_Perferred DropEffect的定义。
  DROPEFFECT_NON=0 DROPEFFECT_COPY=1
  DROPEFFECT_MOVE=2 DROPEFFECT_LINK=4
  DROPEFFECT_SCROLL=8000000-0H
  这些与Idataobject有关,如此处理后就可以解决剪切/复制的问题了。而相应的粘贴和创建快捷方式可以由系统自动完成。
  接下来研究一下如何显示CUT状态和相应显示的复印。
  CUT状态要在WM_DESTROYCLIPBOARD消息后清除掉,这个消息在Emptyclipboard时调用,消息完成后才返回,从而保证了剪贴板不混乱。
  启动的时候可以先展开目录树来初始化列表。但是导致程序启动很慢,所以要想办法先显示列表,用一个线程来显示初始化目录树。这样就可以大幅度提高大眼睛的启动速度。
  由于列表与目录树IDlist和Ishellfolder关联,那么首先要建立IDlist,再建立Ishellfolder对象,可以实验出来但不是太稳定。而原来在启动ShowWindow()及UpdateWindow()导致软件启动时看上去像死机一样,现在加上这种处理之后视觉效果就与原来有很大的不同。
  最后的问题,关于预览窗的刷新处理,解决了它,今天的工作就算圆满完成。
  在预览窗显示文件的时候,由于有小区域的错乱,导致在PAINT中只会刷新无效区域,我们判断一定是由于在PAINT的消息中进行刷新的结果。即使用BeginPaint的HDC也一样,这是程序处理有效区域的混乱导致的。ICON的解码有一些问题,有大小图标时不太正常。在显示预览图时,会有烂块残余。可能是处理小图时的刷新解决动态有问题。在进行刷新时,当图小于32时的分析有问题,导致图像显示出错。我们发现这种情况仅在显示小图时才有。问题找到了,也就好解决了。