编程日记(45)

Author: 梁肇新 Date: 2001年 45期

?牐?2000年2月21日  星期一  晴
  ?牐牻裉斓墓ぷ骷苹巧蒃-mail和实现剪贴板功能。这个问题在上周末就提出来了,经过周末的仔细思考和今天的编程实践,总算实现了。小伙子们都很高兴,我也一样!
  ?牐犜凇逗澜艽笱劬Α返墓δ苌杓浦校胍尤胫苯影淹枷裼玫缱佑始⑺统鋈スδ堋6谙低秤壹说ブ猩傻腟endTo(发送到)功能是非常有用的,但IconTextMenu中却没有。经过分析,发现在发送电子邮件的时候,要使用MAPI的接口来完成。因此我们决定使用Outlook的功能,由MAPI自动完成。这样,就实现了发送E-mail的基本处理。
  ?牐犛捎谏婕傲薙endTo功能,它是系统鼠标右键产生的一个子菜单,可以把所选中的文件或文件夹“发送到”桌面、软驱等位置。《豪杰大眼睛》中的鼠标右键菜单和系统要保持一致,但是取到的SendTo只是一个空项,没有任何反应。由于对于SendTo的许多处理还不是很熟悉,必须在实践中试验出来。在菜单上要自动定义发送功能,应该是用Shell的执行处理。我们发现SendTo系统目录的ShellFolder对象不是Shell的执行处理。因为把SendTo的源拖放于“执行”上并不能执行该操作。
  ?牐犞劣诩籼宓氖迪郑淹枷穹湃爰籼寰涂梢源悠渌砑纭盎省敝腥〉谜飧鐾枷瘛R胪枷窠爰籼灞匦胗玫紾lobalAlloc()来分配。而且剪贴板中的图像还分为DIB格式和HBITMAP格式。由于DIB格式是与设备无关的位图,所以可以直接把要显示图像的全图或缩略图装入剪切板中。而且分成HIFI色彩和显示色彩两种方式。
  ?牐牸羟邪褰邮蹽lobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE)的内存句柄而不是内存指针。对DIB图剪切板不支持正向位图,即BMPINFO中的高度不能为负数,否则接收端会提示格式有问题。
  ?牐犛肷璞赣泄氐耐枷癫挥肈IB方式。DIB方式只能是32或24位图比较合适,与显示有关的图像使用HBITMAP方式。但是如果当前的显示是256色,那么真彩图像就只是256色,无法放入真彩的图像。所以为了减少不必要的程序,不使用与显示有关的剪贴板,也就不需要试验HBITMAP方式了。