• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > ActiveX控件画图问题,急!在线等!!

ActiveX控件画图问题,急!在线等!!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 ActiveX控件画图问题,急!在线等!!等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ActiveX控件画图问题,急!在线等!!
描述:

请问各位:
1、在ActiveX中如何得到控件自己的指针,就象是Dialog的窗口指针一样(AfxGetApp()->GetMainWnd())
2、在ActiveX控件中是否可以实现象在普通窗体中一样的使用鼠标划线功能(主要通过LMouseDown、LMouseUp和MouseMove加DC),如果刻意,如何实现?
    分数不够可以再加!!!!


解决方案1:

不用取,直接用成员m_hWnd

解决方案2:

在HRESULT OnDraw(ATL_DRAWINFO& di)
di.hdcDraw这个就dc句柄,你可以通过它调用GDI函数

解决方案3:

可以得到指针
必须在设置m_bWindowOnly = TRUE;(在构造函数中)
然后用get_window即可,(注意返回的是long ,要进行强制转换)
关于第二项是可以的,只要上面的实现了就好说了.

解决方案4:

1.取得ID或者pWnd来操作
CWnd * pWnd = this->GetFocus();
m_nPicDeviceID = (long)(pWnd->GetDlgCtrlID());
2。不知道你说的刻意是什么意思
      如果只是移动控件,MoveWindow久可以了
      如果要表示移动画个空心矩形,
::SelectObject(dc.m_hDC,(HBRUSH)GetStockObject(NULL_BRUSH));
::Rectangle(dc.m_hDC,m_Rect.left,m_Rect.top,m_Rect.right,m_Rect.bottom);
     如果防止闪烁用异或或者内存COPY就可以了
     如果想在控件里面绘图重写一下绘图部分就可以了,示例:
void CPicDevice::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
// TODO: Add your code to draw the specified item
//AfxMessageBox("CPicDevice::DrawItem!");
TRACE("CPicDevice::DrawItem Begin!\n");
CDC*            pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect           rcItem(lpDrawItemStruct->rcItem);
    CRect           rClient(rcItem);
    CRect           rText;
    CPoint          Pt(((rcItem.Width() - 32) /2 ), rcItem.top + 15);
    pCONTENT_ITEMS  pContents    = &m_pContents[lpDrawItemStruct->itemID];
   // HICON           hIcon = pContents->hIcon;//pContents->nImageID);
    HICON           hIcon = m_hIcon;//AfxGetApp()->LoadIcon(IDR_MAINFRAME);
pContents->strText=m_name.GetBuffer(m_name.GetLength());//m_name;
    rClient.DeflateRect(5,10);
rcItem.CopyRect(rClient);
    rText.CopyRect(rClient);
    rText.top += 40;
    pDC->SetBkMode(TRANSPARENT);
if (lpDrawItemStruct->itemAction & ODA_DRAWENTIRE)
    {
        pDC->DrawIcon(Pt, hIcon);
        pDC->DrawText(pContents->strText, rText, DT_CENTER|DT_WORDBREAK);
    }
/*
    if  (m_bLBDown)
    {
        Pt.x += 2;
        Pt.y += 2;
        rcItem.OffsetRect(2,2);
        rText.OffsetRect(2,2);
    }
*/
if ((lpDrawItemStruct->itemState & ODS_SELECTED) &&
(lpDrawItemStruct->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
    {
        if  (FALSE)
        {
            pDC->FillSolidRect(rClient,GetSysColor(COLOR_BTNFACE));
            if  (m_bLBDown)
                pDC->Draw3dRect(rClient,GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_BTNHIGHLIGHT));
            else
                pDC->Draw3dRect(rClient,GetSysColor(COLOR_BTNHIGHLIGHT),GetSysColor(COLOR_3DSHADOW));
        }
        pDC->DrawIcon(Pt, hIcon);
        pDC->DrawText(pContents->strText, rText, DT_CENTER|DT_WORDBREAK);
    }
if (!(lpDrawItemStruct->itemState & ODS_SELECTED) &&
(lpDrawItemStruct->itemAction & ODA_SELECT))
    {
        pDC->FillSolidRect(rClient,GetSysColor(COLOR_WINDOW));
        pDC->DrawIcon(Pt, hIcon);
        pDC->DrawText(pContents->strText, rText, DT_CENTER|DT_WORDBREAK);
    }
   m_name.ReleaseBuffer();
   }


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ActiveX控件画图问题,急!在线等!!

相关文章

  • 2017-06-04 如何让ActiveX控件将收到的信息显示在网页页面上
  • 2017-06-05 如何在单文档里面调用ocx
  • 2017-06-05 奇怪的编译器问题
  • 2017-06-05 基于对话框的MFC程序怎么保存、打开、编辑编辑框里的内容
  • 2017-06-05 有一个数据要进行传输,在两个线程中如何共享该数据,一个线程为采集,一个线程为显示
  • 2017-06-05 实在没办法了。。求助mscomm不能通讯但超级终端可以
  • 2017-06-04 请教各位强人如何替换正在使用的DLL文件
  • 2017-06-05 线程高手请进来!
  • 2017-06-05 如何用命令流的方式控制自己的软件。命令流可以自己定义,写程序让这个软件识别,命令流操作软件取代交互
  • 2017-06-05 在开发sudoku游戏,请给一些指点和建议(强烈希望数学好一点的朋友给帮助)!谢谢!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 通过SHDocVw::ShellWindows获得了当前所有的ie窗口,该如何得到正在使用的呢?
    • dll问题
    • 在COM的接口函数中,字符串参数应该用什么?
    • 使用DLL文件的问题
    • 请教:Dll导出函数问题
    • 关于实现IDispatch接口的自动化对象很菜的问题,在线等待
    • 如何在VC中响应用vb写的组件里面的事件
    • 谁能给个在ATLASP组件内怎样使用ResponseCookies的方法?
    • ole32和ole2这两个tlb,到底有什么不同?
    • 如何获取IWebBrowser2指针BHO

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有