个人愚见,你的方法,每次都要打开并加载mspaint.exe,如果用对话框打开,虽然也要加载图片,但可以节省打开并加载mspaint.exe本身的开销。
    其实,我用的就是虚拟桌面上后台调用mspaint.exe的方法。问题的关键不在于如何调用它来打开图片,而在于如何调用它的内部功能,比如放缩、另存(格式转换)……比如批量转换格式,我还得调它的“另存为”对话框,用SendMessage或者PostMessage发送消息才能实现。不知mwy654321兄有何高见?
    顺便说一句,我偶然发现并已证实,用mspaint.exe的“另存”功能,把bmp或者jpg图片保存为jpg格式,不论压缩率还是图片质量,都要优于PS\AcdSee等常用工具,呵呵

解决方案 »

  1.   

    有什么疑问就进QQ群40308283找我吧,注意不是Q号。
      

  2.   

    -------------------------------------------------------------------------------
    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就成功的原因。你打开画图程序看看“文件名”是不是有“未命名”默认值。原因就在此。
      

  3.   

    我也遇到这个问题了,默认值这个可能是。但怎么判断呢?我的文本框默认是空的。gettext也是空的。
      

  4.   

    -----------------------------------------------------------------------------------
    我也遇到这个问题了,默认值这个可能是。但怎么判断呢?我的文本框默认是空的。gettext也是空的。 
    -----------------------------------------------------------------------------------这样的话,“gettext也是空的”,可能是在赋默认值之前就gettext了,如果确定有默认值,可以先循环并检测gettext是否为空,如果不为空,则跳出循环,再赋值
    my11911的说法很有道理,有空试试(那个程序很久没碰了,呵呵),请到http://topic.csdn.net/u/20120115/06/88b1fd45-94a0-46ee-8aee-37af2abcae38.html接分