梁肇新编程日记(1)

Author: Date: 2001年 46期

?牐?2000年3月2日  星期四  多云
  ?牐牻裉斓墓ぷ骷苹苊魅罚饕峭瓿梢韵?3个方面:
  ?牐?1.解决如何剪切/复制的功能
  ?牐?2.改善操作显示
  ?牐?3.预览窗的刷新处理
  ?牐犜诖?理大眼睛的剪切和复制功能的时候,我并不知道是怎样实现的,要在大眼睛中进行剪切/复制,然后放到“资源管理器”中,或者进行相反的操作。为了实现这个功能,有两种方法:一、使用SPY来查看所有的消息处理;二、使用Softice查看函数的调用。
  ?牐牳粗坪图羟谐嘶镜腃F_HDROP外,还需要一个登记的类型。Performed DropEffect及Perferred DropEffect就是这种类型,我们分别将它们设置为2和1,各自表示CUT及COPY。其中,Perferred DropEffect为CFSTR_Perferred DropEffect的定义。
  ?牐燚ROPEFFECT_NON=0  DROPEFFECT_COPY=1
  ?牐燚ROPEFFECT_MOVE=2  DROPEFFECT_LINK=4
  ?牐燚ROPEFFECT_SCROLL=8000000-0H
  ?牐犝庑┯隝dataobject有关,如此处理后就可以解决剪切/复制的问题了。而相应的粘贴和创建快捷方式可以由系统自动完成。
  ?牐牻酉吕囱芯恳幌氯绾蜗允綜UT状态和相应显示的复印。
  ?牐燙UT状态要在WM_DESTROYCLIPBOARD消息后清除掉,这个消息在Emptyclipboard时调用,消息完成后才返回,从而保证了剪贴板不混乱。
  ?牐犉舳氖焙蚩梢韵日箍柯际骼闯跏蓟斜怼5堑贾鲁绦蚱舳苈砸氚旆ㄏ认允玖斜恚靡桓鱿叱汤聪允境跏蓟柯际鳌U庋涂梢源蠓忍岣叽笱劬Φ钠舳俣取?
  ?牐犛捎诹斜碛肽柯际鱅Dlist和Ishellfolder关联,那么首先要建立IDlist,再建立Ishellfolder对象,可以实验出来但不是太稳定。而原来在启动ShowWindow()及UpdateWindow()导致软件启动时看上去像死机一样,现在加上这种处理之后视觉效果就与原来有很大的不同。
  ?牐犠詈蟮奈侍猓赜谠だ来暗乃⑿麓?理,解决了它,今天的工作就算圆满完成。
  ?牐犜谠だ来跋允疚募氖焙颍捎谟行∏虻拇砺遥贾略赑AINT中只会刷新无效区域,我们判断一定是由于在PAINT的消息中进行刷新的结果。即使用BeginPaint的HDC也一样,这是程序处理有效区域的混乱导致的。ICON的解码有一些问题,有大小图标时不太正常。在显示预览图时,会有烂块残余。可能是处理小图时的刷新解决动态有问题。在进行刷新时,当图小于32时的分析有问题,导致图像显示出错。我们发现这种情况仅在显示小图时才有。问题找到了,也就好解决了。