建一个CWnd,放在所有窗口的最上层,然后在这个CWnd中绘图

解决方案 »

  1.   

    我常看到朋友在作图象处理的时候,拿彩色笔在屏幕上画线,时间一长,会损伤屏幕表面,希望作一个小工具程序,直接在所有窗口的最上层绘制一些直线之类的辅助线,当程序最大化时,显示工具栏,可以进行绘图,最小化时,工具栏隐藏,但要保留用户绘制的辅助线。
    用CWnd是不错,可以设置它的选项使得它没有边框,按钮,标题行,
    但是最重要的是如何使它底色透明?苦恼!
      

  2.   

    呵呵,如果你用DIRECTDRAW,不想要它在上面都难啊!
    直接往主表面上画,就可以啦,很简单的,稍微看看MSDN的DDRAW帮助就可以了
      

  3.   

    有没有使用CWnd DC绘图的方法能够解决,DirectDraw要从Basic Concepts开始,颇费劲。
      

  4.   

    /**********************感谢关注**********************/
    ///////////////////////Creamdog///////////////////////咦,又有人在说什么DD了?您是搞游戏开发的么?怎么动不动就提DD呀?我说过多少遍了,用DD处理一般应用是最最愚蠢的想法!这样一个简单的问题,动动脑筋不就行了么,用钩子钩DesktopDC嘛,试试吧。
      

  5.   

    还是用CWnd类,不过需自已注册窗口类,当用AfxRegisterWndClass(UINT , HCURSOR , HBRUSH , HICON )注册窗口.
    在 HBRUSH hbrBackground = NULL 时窗口是透明的,但CWnd类默认为白色刷子.
      

  6.   

    AfxRegisterWndClass函数在什么地方使用,能将CMyView改为CMyWnd吗?
    具体如何操作,迷糊?!
      

  7.   

    对啊,MFC框架就已经为CMainFrame建立了一个WNDCLASS并已经在InitInstance的时候就用这个类生成主窗口了,在哪里改啊?!
      

  8.   

    重载CWnd类的PreCreateWindow如下;其中m_szMyClassName为自已用AfxRegisterWndClass注册的类名。
    PreCreateWindow(CREATESTRUCT& cs)
    {
    cs.lpszClass=m_szViewClassName;
    return CScrollView::PreCreateWindow(cs);
    }至于用CMyWnd替代CMyView,则可以不使用MFC文档视窗架构,可以参照对话框为主窗应用向导。Domdal()替换成CWnd类的Create,不过需要注意的是CWnd类不加WS_CHILD风格会创建失败,试用CreateEx.
      

  9.   

    Youngboz(风云飘) :
    你的方法 中!!但新的问题又来了!
    但是最小化时,如何确保绘制的图形驻留在屏幕上,而其他的应用程序能够得到焦点,即:实现仅在屏幕上显示图形,不影响其他程序的使用。
    这个程序如能完成,我会发一份源代码,大家分享.
      

  10.   

    以下可得到全屏幕的访问权:
    CClientDC dc(NULL);CClientDC dc(NULL);
    dc.Ellipse(0,0,100,100);//不论程序窗口,均在全屏幕的左下角画一个圆.