嘿嘿,我不用 MFC,用 WINDOWS API 行不行:
#include <shellapi.h>HINSTANCE ShellExecute(
    HWND hwnd, 
    LPCTSTR lpVerb,
    LPCTSTR lpFile, 
    LPCTSTR lpParameters, 
    LPCTSTR lpDirectory,
    INT nShowCmd
);例:
ShellExecute(hwnd, _T("open"), _T("http://www.microsoft.com"), NULL, NULL, SW_SHOWNORMAL);
ShellExecute(hwnd, _T("open"), _T("mailto:[email protected]"), NULL, NULL, SW_SHOWNORMAL);用 COM 接口来做好像也可以,不过俺没试过有那位大虾补充一下,由我给分!

解决方案 »

  1.   

    To: edyang
    我想在点击Static Text 后再打开主页,请问如何捕获Static text的Mouse Event?
      

  2.   

    不用MFC就要用消息循环来作。当WM_LBUTTONUP时判断id号是否为指定的Static text的,如果是就处理shellexecute(hwnd, _T("open"), _T("http://www.microsoft.com"), NULL, NULL, SW_SHOWNORMAL);
      

  3.   

    To crasher:
    很简单,从 CStatic 派生自己的类(用 MFC 吧,嘿嘿),处理 WM_MOUSEMOVE 和 WM_LBUTTONUP 即可。伪代码如下:CYourStaticClass: public CStatic
    {
      INT m_bMouseIn;
    }// 在构造函数中,别忘了初始化 m_bMouseIn!
    CYourStaticClass::CYourStaticClass()
    {
      m_bMouseIn = FALSE;
    }
    void CYourStaticClass::OnMouseMove(UINT nFlags, CPoint point) 
    {
      CRect  rect;  GetWindowRect(&rect);
      if(m_bMouseIn)
      {
      {
        SetCapture();
        // You may perform some visual effects on your static window
        //  eg. draw a floating rectangle
        m_bMouseIn = TRUE;
      }
      else
        if(!rect.PtInRect(point))
        {
           // Remove the floating rectangle here
           ReleaseCapture();
           m_bMouseIn = FALSE;
        }
      }
    }呵呵,仅仅是伪代码,我倒是有比这复杂的例子。
      

  4.   


        不能用WM_LBUTTONUP直接判断,因为static控件默认不接受鼠标事件。解决方法有两个:    1、设置属性SS_NOTIFY
        2、在OnNcHitTest里直接返回HTCLIENT,这种方法最好。    其实你用一个自画的button最容易,因为button直接有click事件,而static就必须先判断WM_LBUTTONDOWN,然后判断WM_LBUTTONUP,比较麻烦。    最后说一点,以后问问题不要再说“用Mfc的别进来”,因为我就是用MFC的。
      

  5.   

    edyang的方法最简单不过我也有一个方法:看一看MFC的源程序
    docmapi.cpp
    里面有一个OnFileSendMail函数,我把它修改成了基于api的函数,放在了我的BCB程序里面。
    这个方法比较麻烦,但是可以增加附件(估计winzip就是这样子)。
    自己看看,很简单的。
      

  6.   

    如此简单的问题竟然值得一提,MFC的人不用进来,好大的口气,年轻人,谦虚一点!!!
      

  7.   

    To cisco:
     唉... 老爷爷, 我怎么啦?? 以上问题Mfc的实现方法小弟弟我知道怎样实现, 所以别人贴了一大堆mfc原码有什么用?? 浪费资源! 看您的口气好像怀疑我没把Mfc放在眼里是吧? hoho~ 错! 我可没这么想哦~~~ 就不知道您是怎么想的了............ 咳咳.......... @@
      

  8.   

    To cisco:
     问题虽然简单, 但还是有人回答的, 那些人值得尊敬, 某些人只会说大话发废贴子, 浪费网络资源, 结果渐接造成网站速度打折扣, 您说是吗?? 啊?? hoho~~~~~~~~
      

  9.   

    要纯用sdk,用setwindowlong将static text窗口子类化,在新窗口过程处理mouse...,想怎么做都可以了。这是个万能方法,可以随便操纵任何窗口。重载mfc类的底层实现方法的基本原理多半是这样,但用mfc远没有用sdk方便自如,效率也没有用sdk好,我现在编程只用sdk,没特别情况我不打算再用mfc了。kevin_is_shit,很高兴认识用sdk的programmer ,希望常交流。
      

  10.   

    to edyang:
    呵呵,用COM也可以的。
    基本思想是先得到Monik,再使用这个Monik调用函数进行处理。要是要知道详细的话,我下次贴。现在工作好好忙。呵呵。看看我贴的另外一个东西?我快烦死了。
    "谁知道MFC里子框架/视/文档三位一体结构完全建好是什么时候?100分倾情发送."