是一段救命的代码! 要求是 在一个界面上面手绘一个信封的botton (不允许用自带控件)
然后一点击 就可以用本机上所带的outlook 发送邮件据说挺简单的 可是 我没太做过界面的东西……唉

解决方案 »

  1.   

    调用outlook使用ShellExecute就可以了
    自绘按钮代码太多了
    去下面几个站点找资料吧
    http://www.vckbase.com/
    http://www.vchelp.net/
    http://www.codeguru.com/
    http://www.codeproject.com/
      

  2.   

    呵呵,信封图片没有啊,如果有不是很简单?自画控件其实有两种方式:1、响应WM_DRAWITEM在主程序中自画,2、直接派生自己的类,重载虚函数DrawItem。
    调用OutLook参考:
    http://www.codeproject.com/useritems/Outlook-addin.asp
    http://www.codeproject.com/com/outlookaddinzip.asp
      

  3.   


    我已经知道如何调用outlook发邮件了
    就差手绘图标了再研究研究吧……
      

  4.   

    要不这样,直接获取设备上下文DC(CDC *dc = GetDC()),在DC上画个框(dc->DrawRectangle),把框的矩形区域rc(CRect)保存下来,在框里画两条交叉的直线(MoveTo和LineTo),表示一个信封的图标。然后响应鼠标单击事件(WM_LBUTTONDOWN),获取鼠标位置pt(CPoint),判断pt是否在rc中(rc.PtInRect),是则调用outlook(ShellExcute)。
    以上是我直接说的,没有编程实现,你自己实现吧,都很明了。
      

  5.   

    ShellExecute(0,NULL,"mailto:[email protected]",NULL,NULL,SW_NORMAL|SW_SHOW);
      

  6.   

    发送Mail可以参考:
    http://www.vckbase.com/document/viewdoc/?id=651自画图片按钮可以,在对话框中响应WM_DRAWITEM消息,参考代码:
    void CSendMailDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    //完成按钮自画
    CDC ButtonDC;
    CBitmap BitmapMail;
    BITMAP bmp;
    CDC mem;
    CRect rc;
    //得到用于绘制按钮的DC
    ButtonDC.Attach(lpDrawItemStruct->hDC);
    //准备用于向按钮区域传输位图
    mem.CreateCompatibleDC(&ButtonDC);
    //获取按钮所占矩形的大小
    rc = lpDrawItemStruct->rcItem; UINT state = lpDrawItemStruct->itemState;
    if(state&ODS_FOCUS)
    {
    BitmapMail.LoadBitmap(IDB_MAIL_FOCUS);
    BitmapMail.GetBitmap(&bmp);
    CBitmap * Old = mem.SelectObject(&BitmapMail);
    ButtonDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    mem.SelectObject(Old);
    BitmapMail.DeleteObject();
    ButtonDC.SetBkMode(TRANSPARENT);
    }
    else
    {
    BitmapMail.LoadBitmap(IDB_MAIL);
    CBitmap * Old2 = mem.SelectObject(&BitmapMail);
    BitmapMail.GetBitmap(&bmp);
    CBitmap * Old = mem.SelectObject(&BitmapMail);

    ButtonDC.StretchBlt(rc.left,rc.top,rc.right,rc.bottom,&mem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    mem.SelectObject(Old2);
    BitmapMail.DeleteObject();
    ButtonDC.SetBkMode(TRANSPARENT);
    }


    CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
    }