个人愚见,你的方法,每次都要打开并加载mspaint.exe,如果用对话框打开,虽然也要加载图片,但可以节省打开并加载mspaint.exe本身的开销。
其实,我用的就是虚拟桌面上后台调用mspaint.exe的方法。问题的关键不在于如何调用它来打开图片,而在于如何调用它的内部功能,比如放缩、另存(格式转换)……比如批量转换格式,我还得调它的“另存为”对话框,用SendMessage或者PostMessage发送消息才能实现。不知mwy654321兄有何高见?
顺便说一句,我偶然发现并已证实,用mspaint.exe的“另存”功能,把bmp或者jpg图片保存为jpg格式,不论压缩率还是图片质量,都要优于PS\AcdSee等常用工具,呵呵
其实,我用的就是虚拟桌面上后台调用mspaint.exe的方法。问题的关键不在于如何调用它来打开图片,而在于如何调用它的内部功能,比如放缩、另存(格式转换)……比如批量转换格式,我还得调它的“另存为”对话框,用SendMessage或者PostMessage发送消息才能实现。不知mwy654321兄有何高见?
顺便说一句,我偶然发现并已证实,用mspaint.exe的“另存”功能,把bmp或者jpg图片保存为jpg格式,不论压缩率还是图片质量,都要优于PS\AcdSee等常用工具,呵呵
http://topic.csdn.net/u/20100418/05/667f6fcf-1604-4d2f-91bf-35a4173e025b.html我取得该Edit控件的句柄后,用SendMessage(hEdit,WM_SETTEXT,0,LPARAM(MyMsg)直接发
消息修改Edit的文本,没有反应;在SendMessage前面加上一句Sleep(N),则当N足够大时
可以成功修改Edit的内容,N不够大时可能成功,也可能失败。
是否有一种方法判断什么时候能发SendMessage?
(SnedMessage之前,Edit的内容为空)
------------------------------------------------------------------------------
我也被这问题卡了半天,现在终于找到原因了。其实不是SendMessage(hEdit,WM_SETTEXT,0,LPARAM(MyMsg)修失败了,而是你要修改的控件程序有默认值;因为你在窗口刚生成,目标程序还没对控件赋默认值前,就发送SendMessage(hEdit,WM_SETTEXT,0,LPARAM(MyMsg)消息对控件进行了更改值,接着程序又赋默认值,等于SendMessage成功更改后,又被目标窗口所属进程改回了,以至于看上去好像没改。这也就是为什么sleep(N);后再发送SendMessage就成功的原因。你打开画图程序看看“文件名”是不是有“未命名”默认值。原因就在此。
我也遇到这个问题了,默认值这个可能是。但怎么判断呢?我的文本框默认是空的。gettext也是空的。
-----------------------------------------------------------------------------------这样的话,“gettext也是空的”,可能是在赋默认值之前就gettext了,如果确定有默认值,可以先循环并检测gettext是否为空,如果不为空,则跳出循环,再赋值
my11911的说法很有道理,有空试试(那个程序很久没碰了,呵呵),请到http://topic.csdn.net/u/20120115/06/88b1fd45-94a0-46ee-8aee-37af2abcae38.html接分