请问如何判断在richtextbox中点击的是图片?
比如说若右击了图片就弹出一个菜单提示可以保存?
感谢你关注和回答我的问题,谢谢!

解决方案 »

  1.   

    这个如果你使用系统提供的richtextbox恐怕很难
    subclass  richtextbox拦截它的消息看看
      

  2.   

    拦截哪个消息呢?能提示下吗?谢谢了。上次用spy++试了下,发现只有个未知的0x0118(不太记得了)消息可疑,其它的没见到什么有价值的消息。
      

  3.   

    www.cnpopsoft.com 
    这里可以找到不少关于RTF文件格式的资料
      

  4.   

    cnpopsoft兄,不忘打打广告 : )首先,到cnpopsoft兄那里下载一个中文版的说明,然后仔细阅读,
    在程序中使用 RichTextBox1.SelRTF ,分析返回的值,可以看到
    {\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052\deftab420{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
    {\info{\horzdoc}{\*\lchars ([\'7b\'a1\'a4\'a1\'ae\'a1\'b0\'a1\'b4\'a1\'b6\'a1\'b8\'a1\'ba\'a1\'be\'a1\'b2\'a1\'bc\'a3\'a8\'a3\'ae\'a3\'db\'a3\'fb\'a1\'ea\'a3\'a4}{\*\fchars !),.:\'3b?]\'7d\'a1\'a7\'a1\'a4\'a1\'a6\'a1\'a5\'a8\'44\'a1\'ac\'a1\'af\'a1\'b1\'a1\'ad\'a1\'c3\'a1\'a2\'a1\'a3\'a1\'a8\'a1\'a9\'a1\'b5\'a1\'b7\'a1\'b9\'a1\'bb\'a1\'bf\'a1\'b3\'a1\'bd\'a3\'a1\'a3\'a2\'a3\'a7\'a3\'a9\'a3\'ac\'a3\'ae\'a3\'ba\'a3\'bb\'a3\'bf\'a3\'dd\'a3\'e0\'a3\'fc\'a3\'fd\'a1\'ab\'a1\'e9}}
    \uc1\pard\nowidctlpar\qj\lang2052\f0\fs18{\pict\wmetafile8\picw6350\pich4921\picwgoal3600\pichgoal2790 
    (略)
    其中的“pic”之类的大概就是指图片,请参看rtf说明,再慢慢分析吧。
    附:省略的部分,我估计是图片的内容。
    不一定正确,请自己分析。
      

  5.   

    TO UruseiBest(UruseiBest)
    很个感谢你的建议.RTF格式的我也看了下.略的部分是图片的内容.是将图片内容按16进制直接保存在RTF文本里的.但是这个格式跟如何判断点击的对象是图片好像没帮助.
    谢谢你!
      

  6.   

    可以通过另类的办法实现(我已经帮你实现了)
    思路:根据UruseiBest(UruseiBest)的建议,我在vb中试了一下,图片的.SelRTF 中确实有pict,picw,pich等字符,估计是宽度、高度以及像素等信息:"....}\uc1\pard\lang2052\f0\fs18{\pict\wmetafile8\picw4497\pich158...."
    另外,当鼠标点击Richtxtbox中的图片时,图片就会自动被选,这个时候我们就可以获得图片的.SelRTF,那么在richtextbox中点击的时候,如果 SelRTF中包含有pic (或picw) 等信息,就说明点击的是图片了,剩下的就好办了:
    Private Sub RichTextBox1_Click()
    Text1.text = RichTextBox1.SelRTF
    Dim a As Long
    a = InStr(Text1.text, "pic")  '判断是否包含pic,或picw也可以
    if a>0 then MsgBox "你点击的是图片!!"
    End Sub(我在vb中测试不同图片的a值的都是109)
      

  7.   

    哦。这个方法不错。我没注意UruseiBest(UruseiBest) 回复里的 “在程序中使用RichTextBox1.SelRTF”。非常感谢,总算是有条简单的途径了。
    最近考虑觉得VirtualDesktop(吴滂:欢迎到我的Blog转转 ^_^)所说的subclass方法应该也不错。谁知道点击图片框时会发送什么消息?
    可以JT了。谢谢各位帮忙!