⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_32552.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:32552 发表者:dff 发表日期:2003-03-13 00:03:23
<br>主题:透明窗口
<br>内容:我现在需用MFC开发一个无颜色的窗口,但必须在 窗口中画几条线,同时这个窗口可以RESIZE和移动,并且窗口覆盖在一个视频窗口上能将视频窗口正确的显示出来,我应如何作???
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-03-13 08:53:45
<br>内容:1.透明窗口 (显示视频窗口)<BR>2.窗口中画线<BR>3.窗口可以移动<BR>4.窗口可以调整大小<BR><BR><BR>这几个功能都不难实现!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:魔刀 回复日期:2003-03-13 10:53:43
<br>内容://加入WS_EX_LAYERED扩展属性<BR>SetWindowLong(this-&gt;GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(this-&gt;GetSafeHwnd(),GWL_EXSTYLE)^0x80000);<BR>HINSTANCE hInst = LoadLibrary("User32.DLL"); <BR>if(hInst) <BR>{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); <BR>&nbsp;&nbsp;&nbsp;&nbsp;MYFUNC fun = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//取得SetLayeredWindowAttributes函数指针 <BR>&nbsp;&nbsp;&nbsp;&nbsp;fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(fun)fun(this-&gt;GetSafeHwnd(),0,96,2); <BR>&nbsp;&nbsp;&nbsp;&nbsp;FreeLibrary(hInst); <BR>}<BR><BR>在对话框初始化时调用即可
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dff 回复日期:2003-03-13 12:45:53
<br>内容:使用USER32中的SetLayeredWindowAttributes函数是不行的,因为我的透明窗口是覆盖在一个视频窗口上,由于视频窗口是以每秒30桢的速度在刷新,因而透明窗口中画上去的线在不停的抖动!!!!<BR><BR>不知bird先生说所有的技术不难实现 ,如何作??????? 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-03-13 14:41:29
<br>内容:你是不是想做OSD?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-17 10:10:20
<br>内容:最常想到的方法,当然是使用Invalidate(TRUE);//刷新整个无效区<BR><BR>   UpdateWindow();<BR><BR>   这时,会刷新整个程序区域的无效区,闪烁非常严重,改正如下:<BR><BR>    InvalidateRect(&amp;m_rtPic,TRUE); file://仅刷新图像显示区域<BR><BR>    UpdateWindow();<BR><BR>   此时,仅会刷新图像所在区域,闪烁有所缓解,再进一步,可使用<BR><BR>    InvalidateRect(&amp;m_rtPic,TRUE); file://使用快速重画<BR><BR>    ReDrawWindow(&amp;m_rtPic,NULL,RDW_INTERNALPAINT| RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);<BR><BR>进行处理,此时闪烁更进一步减小,考虑到,其他部分可能影响刷新区域,干脆将OnPaint()直接使用在此处,即变为:<BR><BR>  OnPaint(); <BR><BR>  但如果在OnPaint()中有大量的绘图语句,这种方法仍旧不可行,考虑到不能激发OnPaint()这一因素及控制刷新范围,我采用了如下非标准的方法解决,代码如下:<BR><BR>  CDC *pDC;<BR><BR>  pDC = GetDC();<BR><BR>  if(m_pImgInfo != NULL)<BR><BR>   pDC-&gt;BitBlt(m_wShowLeft,m_wShowTop,m_lWidth,m_lHeight,&amp;m_AdjDC,m_lPicLeft,m_lPicTop,SRCCOPY);<BR><BR>   ReleaseDC(pDC);<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-17 11:10:38
<br>内容:http://www.copathway.com/itbookreview/view_paper.asp?paper_id=676
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bear 回复日期:2003-03-17 15:41:35
<br>内容:去看看:<BR>http://www.vckbase.com/document/viewdoc.asp?id=333
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -