如何在所有窗口的最上层绘图,并确保图形不被覆盖? 建一个CWnd,放在所有窗口的最上层,然后在这个CWnd中绘图 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我常看到朋友在作图象处理的时候,拿彩色笔在屏幕上画线,时间一长,会损伤屏幕表面,希望作一个小工具程序,直接在所有窗口的最上层绘制一些直线之类的辅助线,当程序最大化时,显示工具栏,可以进行绘图,最小化时,工具栏隐藏,但要保留用户绘制的辅助线。用CWnd是不错,可以设置它的选项使得它没有边框,按钮,标题行,但是最重要的是如何使它底色透明?苦恼! 呵呵,如果你用DIRECTDRAW,不想要它在上面都难啊!直接往主表面上画,就可以啦,很简单的,稍微看看MSDN的DDRAW帮助就可以了 有没有使用CWnd DC绘图的方法能够解决,DirectDraw要从Basic Concepts开始,颇费劲。 /**********************感谢关注**********************////////////////////////Creamdog///////////////////////咦,又有人在说什么DD了?您是搞游戏开发的么?怎么动不动就提DD呀?我说过多少遍了,用DD处理一般应用是最最愚蠢的想法!这样一个简单的问题,动动脑筋不就行了么,用钩子钩DesktopDC嘛,试试吧。 还是用CWnd类,不过需自已注册窗口类,当用AfxRegisterWndClass(UINT , HCURSOR , HBRUSH , HICON )注册窗口.在 HBRUSH hbrBackground = NULL 时窗口是透明的,但CWnd类默认为白色刷子. AfxRegisterWndClass函数在什么地方使用,能将CMyView改为CMyWnd吗?具体如何操作,迷糊?! 对啊,MFC框架就已经为CMainFrame建立了一个WNDCLASS并已经在InitInstance的时候就用这个类生成主窗口了,在哪里改啊?! 重载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. Youngboz(风云飘) :你的方法 中!!但新的问题又来了!但是最小化时,如何确保绘制的图形驻留在屏幕上,而其他的应用程序能够得到焦点,即:实现仅在屏幕上显示图形,不影响其他程序的使用。这个程序如能完成,我会发一份源代码,大家分享. 以下可得到全屏幕的访问权:CClientDC dc(NULL);CClientDC dc(NULL);dc.Ellipse(0,0,100,100);//不论程序窗口,均在全屏幕的左下角画一个圆. 请问注册dll文件的问题 类向导中加入误删的类 vc制作程序的语言问题 我vc ocx 控件,接收一个char 的数组 如何把自己的程序设为默认浏览器 如何加载一个png图片为鼠标? 什么让进程安静的消失? 双击标题栏,改变窗口大小的确切消息是什么?如何禁止双击标题栏改变大小? 在vc 中,如何从注册表里提取网卡号,最好给一些例子,小妹谢了:) VS2010和VS2015变量字节数问题 急急急请帮忙看一下在线等待!!! 如何判断是真正键盘输入还是软件模拟输入
用CWnd是不错,可以设置它的选项使得它没有边框,按钮,标题行,
但是最重要的是如何使它底色透明?苦恼!
直接往主表面上画,就可以啦,很简单的,稍微看看MSDN的DDRAW帮助就可以了
///////////////////////Creamdog///////////////////////咦,又有人在说什么DD了?您是搞游戏开发的么?怎么动不动就提DD呀?我说过多少遍了,用DD处理一般应用是最最愚蠢的想法!这样一个简单的问题,动动脑筋不就行了么,用钩子钩DesktopDC嘛,试试吧。
在 HBRUSH hbrBackground = NULL 时窗口是透明的,但CWnd类默认为白色刷子.
具体如何操作,迷糊?!
PreCreateWindow(CREATESTRUCT& cs)
{
cs.lpszClass=m_szViewClassName;
return CScrollView::PreCreateWindow(cs);
}至于用CMyWnd替代CMyView,则可以不使用MFC文档视窗架构,可以参照对话框为主窗应用向导。Domdal()替换成CWnd类的Create,不过需要注意的是CWnd类不加WS_CHILD风格会创建失败,试用CreateEx.
你的方法 中!!但新的问题又来了!
但是最小化时,如何确保绘制的图形驻留在屏幕上,而其他的应用程序能够得到焦点,即:实现仅在屏幕上显示图形,不影响其他程序的使用。
这个程序如能完成,我会发一份源代码,大家分享.
CClientDC dc(NULL);CClientDC dc(NULL);
dc.Ellipse(0,0,100,100);//不论程序窗口,均在全屏幕的左下角画一个圆.