关于WM_ERASEBKGND和WM_PAINT的深刻理解
一直以来,对于WM_PAINT和WM_ERASEBKGND消息不是很清楚,从书上和网上找了很多资料,大体上有以下几点说法:
1>WM_PAINT先产生,WM_ERASEBKGND后产生
2.WM_PAINT产生后,在调用BeginPaint时
hdc = BeginPaint(hWnd, &ps);
如果ps.fErase为true,则BeginPaint会产生WM_ERASEBKGND消息
3.BeginPaint函数用来擦除窗口背景
4.WM_ERASEBKGND用来绘制背景
经过调试、分析,发现上面的说法并不正确。以下是一些测试代码,代码后面附上一些分析。最后总结出几点,可以解释程序中出现的所有关于窗口重绘的问题。
如有不正确的地方,大家可以指正。
为了说明问题,在此不说WM_NCPAINT消息(非客户区消息),只说WM_ERASEBKGND消息和客户区的WM_PAINT消息
//此段代码摘自vc6应用程序向导自动生成的代码,并添加了一些测试代码
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_ERASEBKGND: //如果处理了这个消息,则默认消息处理函数不会调用,背景就不会绘制
{
static int iCount=0;
char ch[MAX_PATH];
sprintf(ch,"%d ---------WM_ERASEBKGND\n",iCount); //这个函数需要包含#include<stdio.h>
OutputDebugString(ch); //调试时便于观察
iCount++;
break;
}
case WM_PAINT:
{
OutputDebugString(" -------------WM_PAINT\n");
hdc = BeginPaint(hWnd, &ps); //使无效区域变得有效,并填充ps结构
// TODO: Add any drawing code here...
//绘制一个蓝色椭圆,ps.rcPaint保存了客户区矩形
HBRUSH hbrush=::CreateSolidBrush(RGB(0,0,255));
::SelectObject(hdc,hbrush);
::Ellipse(hdc,ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
::DeleteObject(hbrush);
EndPaint(hWnd, &ps);
break;
}
case WM_LBUTTONDOWN: //调用DefWindowProc擦除客户区背景
{
HDC hdc;
hdc=::GetDC(hWnd);
WPARAM w=(WPARAM)hdc;
LPARAM l=0;
DefWindowProc(hWnd, WM_ERASEBKGND, w, l);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
先说一下程序运行时发现的一些现象:
1.
上面的代码:如果添加了WM_ERASEBKGND消息,里面什么也不做,如下
case WM_ERASEBKGND:
break;
则当程序运行时,如果收到WM_ERASEBKGND消息,则这个switch-case结构中就不会执行默认消息处理函数DefWindowProc,运行时发现,窗口的背景就没有了,即背景为空。
这说明了窗口背景仅仅是由默认的消息处理函数DefWindowProc绘制的。
(注:注册窗口类时,背景设置为白色wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);)
2.
如上面的代码,因为有WM_ERASEBKGND消息,则程序运行时窗口背景为NULL,
但是如果添加了WM_LBUTTONDOWN消息,从里面调用默认窗口消息处理函数,如下
case WM_LBUTTONDOWN:
{
HDC hdc;
hdc=::GetDC(hWnd);
WPARAM w=(WPARAM)hdc; //变量w作为WM_ERASEBKGND消息的wParam参数,保存了设备环境句柄
LPARAM l=0;
DefWindowProc(hWnd, WM_ERASEBKGND, w, l); //调用默认消息处理函数DefWindowProc
}
break;
程序运行时,如果用鼠标单击一下窗口客户区,则窗口的背景就会显示!这进一步说明了窗口的背景色是由默认消息处理函数DefWindowProc绘制的。
3.
以上代码,因为添加了WM_ERASEBKGND消息,所以窗口背景是空。
虽然在WM_PAINT消息中有
hdc = BeginPaint(hWnd, &ps);函数的调用,但是窗口背景仍然是空,这说明了BeginPaint函数并不会擦除背景(即用默认画刷绘制窗口背景)。
BeginPaint函数只做了两件事情:
1》使窗口无效区域变得有效,从而使Windows不再发送WM_PAINT消息(直到窗口大小改变等,使窗口再次变得无效)。
(如果窗口一直无效,则Windows会不停地发送WM_PAINT消息)
1》填充PAINTSTRUCT结构。填充这个结构的目的,是让程序员可以根据ps变量中的标志值进行某些操作
4.
调试的时候,发现:当窗口改变大小,或者其它操作使窗口变得无效时,WM_ERASEBKGND消息总是先于WM_PAINT消息发出,而且如果产生WM_ERASEBKGND消息,
则最后一个WM_ERASEBKGND的下一条消息一定是WM_PAINT消息(WM_ERASEBKGND可能会连续产生几次)。WM_ERASEBKGND消息和WM_PAINT消息之间没有其它消息
--------------------------------------------
以下是一些总结
1.窗口背景的擦除(即绘制)
窗口的背景色是由默认的消息处理函数DefWindowProc擦除的(即这个函数使用注册窗口类时使用的背景刷擦除窗口背景)。
什么时候绘制?在窗口函数收到WM_ERASEBKGND消息,DefWindowProc函数以WM_ERASEBKGND为参数,才会绘制窗口背景
(注:当WM_ERASEBKGND消息产生后,窗口一定有一部分变得无效)
2.窗口的无效:
当拖动窗口的一个顶点改变了窗口的大小、窗口由最小化恢复到最大化、窗口的一部分被其它窗口遮住又重新显示、调用MoveWindow函数改变了窗口大小、窗口移动到桌面之外的
部分被拖回重新显示时,窗口就会变得无效。 无效区域是整个客户区,因此默认窗口处理函数DefWindowProc会擦除整个客户区。
(注:拖动窗口标题栏移动窗口,只要窗口没有移动到屏幕之外,那么这两个消息都不产生)
当窗口无效时,Windows会给窗口发出WM_ERASEBKGND消息和WM_PAINT消息,而且WM_ERASEBKGND先发出一次或者几次,紧接着是WM_PAINT
例外:InvalidateRect函数的调用会使窗口变得无效,并产生WM_ERASEBKGND消息和WM_PAINT消息,而WM_ERASEBKGND是否产生取决于参数bErase
void InvalidateRect (
LPCRECT lpRect,
BOOL bErase = TRUE );
当参数bErase为true时,WM_ERASEBKGND消息产生,当bErase为false时WM_ERASEBKGND消息不产生
3.消息的处理过程
当窗口无效时,
先发出WM_ERASEBKGND消息若干次-----------再发出WM_PAINT消息,WM_ERASEBKGND和WM_PAINT之间没有其它消息
WM_ERASEBKGND消息的后面一定是WM_PAINT
1》WM_ERASEBKGND消息的处理:
上面的代码,如果没有添加WM_ERASEBKGND,则默认的消息处理函数DefWindowProc会被调用,此时的DefWindowProc会擦除窗口背景(即绘制背景),并且ps.fErase会为FALSE
如果添加了WM_ERASEBKGND消息,DefWindowProc就不会被调用,则无法擦除窗口背景,并且ps.fErase会为true
2》WM_PAINT的处理
在这个消息中如果调用了hdc = BeginPaint(hWnd, &ps);函数,则此函数只做了两件事:填充ps结构、使窗口重新变得有效
另外DefWindowProc函数也会使窗口变得有效
关于ps.fErase;
这个参数和窗口函数WndProc的返回值有关:
当窗口函数WndProc返回true;则产生WM_PAINT消息时,ps.fErase就为false;表明系统擦除了背景
当窗口函数WndProc返回false;则产生WM_PAINT消息时,ps.fErase就为true;表明系统没有擦除背景
设想一下,当上面的代码中添加了WM_ERASEBKGND消息并在其中直接返回true(这表明系统已经绘制了窗口背景),则ps.fErase就为false
case WM_ERASEBKGND:
return true; //窗口函数WndProc返回true;
注意返回的真或者假只是让程序员可以看见ps.fErase,并作出自己的代码,与窗口的显示即背景没有关系
有些人说当ps.fErase==true,BeginPaint函数会发送一个WM_ERASEBKGND消息,其实BeginPaint并未发出WM_ERASEBKGND消息
4.自己绘制背景或者系统绘制背景。
如果程序员不想系统擦除背景,而自己想绘制背景,怎么办呢?方法是在WM_ERASEBKGND消息处理中添加自己的绘制代码。
对于WM_ERASEBKGND消息,wParam参数保存了用于绘制的设备环境,lParam不使用。
如上面的示例代码,当添加了WM_ERASEBKGND消息,则switch---case中就不会调用DefWindowProc函数绘制背景。这时,程序员自己就可以添加绘制代码
而在基于MFC的程序中,是这样处理自绘代码的:
BOOL CCeDlg::OnEraseBkgnd(CDC* pDC) //这个函数就是WM_ERASEBKGND的消息处理函数
{
// TODO: Add your message handler code here and/or call default
//添加自绘代码
...
return TRUE; //返回真,代表着窗口函数的返回值。以便于程序员在WM_PAINT消息中作出相应处理(如果需要)。这里返回时就不会调用下面的默认处理
//下面将调用系统默认的消息处理函数DefWindowProc进行背景的默认绘制。
return CDialog::OnEraseBkgnd(pDC); //不执行自动生成的这个函数
}
执行这个函数时,提示用户绘制背景,如果用户没有绘制背景,则return CDialog::OnEraseBkgnd(pDC);调用默认的窗口处理函数进行背景的擦除
BOOL CCeDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
//添加自绘背景代码
CBitmap m_bitmap;
BITMAP m_bmInfo;
m_bitmap.LoadBitmap(IDB_BITMAP1);
m_bitmap.GetObject(sizeof(m_bmInfo),&m_bmInfo);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&m_bitmap);
GetClientRect(m_rect);
pDC->StretchBlt(0,0,m_rect.Width(),m_rect.Height(),
&memDC,0,0,m_bmInfo.bmWidth,m_bmInfo.bmHeight,SRCCOPY); //内存拷贝函数。绘制背景
memDC.DeleteDC();
return true;//返回真,代表着窗口函数的返回值。以便于程序员在WM_PAINT消息中作出相应处理(如果需要)。这里返回时就不会调用下面的默认处理
//下面将调用系统默认的消息处理函数DefWindowProc进行背景的默认绘制。
return CDialog::OnEraseBkgnd(pDC); //不执行自动生成的这个函数
}
5.WM_ERASEBKGND消息和WM_PAINT消息的另外一种含义:背景色与前景色
可以这样理解WM_ERASEBKGND消息和WM_PAINT消息:
WM_ERASEBKGND消息用于通知系统或者程序员绘制背景色
WM_PAINT消息用于通知程序员绘制前景色,比如在WM_PAINT中调用TextOut函数输出文本
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use> </svg><span class="name">点赞</span> <span class="count">2</span> </a></li> <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use> </svg><span class="name">收藏</span></a></li> <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use> </svg>分享</a></li> <!--打赏开始--> <!--打赏结束--> <li class="tool-item tool-more"> <a> <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg> </a> <ul class="more-box"> <li class="item"><a class="article-report">文章举报</a></li> </ul> </li> </ul> </div> </div> <div class="person-messagebox"> <div class="left-message"><a href="https://blog.csdn.net/sdeeds"> <img src="https://profile.csdnimg.cn/7/3/E/3_sdeeds" class="avatar_pic" username="sdeeds"> <img src="https://g.csdnimg.cn/static/user-reg-year/1x/11.png" class="user-years"> </a></div> <div class="middle-message"> <div class="title"><span class="tit"><a href="https://blog.csdn.net/sdeeds" data-report-click="{"mod":"popu_379"}" target="_blank">sdeeds</a></span> </div> <div class="text"><span>发布了1 篇原创文章</span> · <span>获赞 2</span> · <span>访问量 1万+</span></div> </div> <div class="right-message"> <a href="https://im.csdn.net/im/main.html?userName=sdeeds" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信 </a> <a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379"}">关注</a> </div> </div> </div> </article>
<script>
$(".add-btn").click(function(){
// $(this).attr("data-url")
// sessionStorage.setItem("usename", $(this).attr("data-usename"));
// sessionStorage.setItem("articleId", $(this).attr("data-articleId"));
showReport(false,articleTitles,$(this).attr("data-origin_username"),$(this).attr("data-origin_article_id"))
})
$("#blog_detail_zk_collection").click(function(){
window.csdn.articleCollection()
})
ON_WM_PAINT(),ON_WM_ERASEBKGND(),ON_WM_QUERYDRAGICON()
06-10 阅读数 8139
ON_WM_PAINT只有当需要对窗口进行绘制时才有用,你如果不做任何绘制工作,这个函数自然没用; ON_WM_ERASEBKGND当背景擦除时被调用,你如果不需要定制背景,DefWindow... 博文 来自: learn Attitude
<div class="comment-list-container">
<a id="comments"></a>
<div class="comment-list-box" style="max-height: 231px;"><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="9716354" data-replyname="qq_43342893"> <a target="_blank" href="https://me.csdn.net/qq_43342893"><img src="https://profile.csdnimg.cn/6/1/E/3_qq_43342893" username="qq_43342893" alt="qq_43342893" class="avatar"></a> <div class="right-box "> <div class="new-info-box clearfix"> <a target="_blank" href="https://me.csdn.net/qq_43342893"><span class="name ">qq_43342893</span></a><span class="date" title="2019-05-07 18:24:45">7个月前</span><span class="floor-num">#7楼</span><span class="new-comment">谢了,被卡了好久的问题终于搞懂了</span><span class="new-opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="9716354"><svg t="1569296798904" class="icon " viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5522" width="200" height="200"><path d="M726.016 906.666667h-348.586667a118.016 118.016 0 0 1-116.992-107.904l-29.013333-362.666667A117.589333 117.589333 0 0 1 348.458667 309.333333H384c126.549333 0 160-104.661333 160-160 0-51.413333 39.296-88.704 93.397333-88.704 36.906667 0 71.68 18.389333 92.928 49.194667 26.88 39.04 43.178667 111.658667 12.714667 199.509333h95.530667a117.418667 117.418667 0 0 1 115.797333 136.106667l-49.28 308.522667a180.608 180.608 0 0 1-179.072 152.704zM348.458667 373.333333l-4.48 0.170667a53.461333 53.461333 0 0 0-48.768 57.472l29.013333 362.666667c2.218667 27.52 25.6 49.024 53.205333 49.024h348.544a116.949333 116.949333 0 0 0 115.925334-98.816l49.322666-308.736a53.418667 53.418667 0 0 0-52.650666-61.781334h-144.085334a32 32 0 0 1-28.458666-46.634666c45.909333-89.130667 28.885333-155.434667 11.562666-180.522667a48.981333 48.981333 0 0 0-40.192-21.504c-6.912 0-29.397333 1.792-29.397333 24.704 0 111.317333-76.928 224-224 224h-35.541333zM170.624 906.666667a32.042667 32.042667 0 0 1-31.872-29.44l-42.666667-533.333334a32.042667 32.042667 0 0 1 29.354667-34.474666c17.066667-1.408 33.024 11.733333 34.432 29.354666l42.666667 533.333334a32.042667 32.042667 0 0 1-31.914667 34.56z" p-id="5523"></path></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="4774469" data-replyname="wuyan233"> <a target="_blank" href="https://me.csdn.net/wuyan233"><img src="https://profile.csdnimg.cn/8/4/C/3_wuyan233" username="wuyan233" alt="wuyan233" class="avatar"></a> <div class="right-box "> <div class="new-info-box clearfix"> <a target="_blank" href="https://me.csdn.net/wuyan233"><span class="name ">ahahaaaab</span></a><span class="date" title="2015-02-02 18:18:52">4年前</span><span class="floor-num">#6楼</span><span class="new-comment">解释的很清楚很详细,谢了!</span><span class="new-opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="4774469"><svg t="1569296798904" class="icon " viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5522" width="200" height="200"><path d="M726.016 906.666667h-348.586667a118.016 118.016 0 0 1-116.992-107.904l-29.013333-362.666667A117.589333 117.589333 0 0 1 348.458667 309.333333H384c126.549333 0 160-104.661333 160-160 0-51.413333 39.296-88.704 93.397333-88.704 36.906667 0 71.68 18.389333 92.928 49.194667 26.88 39.04 43.178667 111.658667 12.714667 199.509333h95.530667a117.418667 117.418667 0 0 1 115.797333 136.106667l-49.28 308.522667a180.608 180.608 0 0 1-179.072 152.704zM348.458667 373.333333l-4.48 0.170667a53.461333 53.461333 0 0 0-48.768 57.472l29.013333 362.666667c2.218667 27.52 25.6 49.024 53.205333 49.024h348.544a116.949333 116.949333 0 0 0 115.925334-98.816l49.322666-308.736a53.418667 53.418667 0 0 0-52.650666-61.781334h-144.085334a32 32 0 0 1-28.458666-46.634666c45.909333-89.130667 28.885333-155.434667 11.562666-180.522667a48.981333 48.981333 0 0 0-40.192-21.504c-6.912 0-29.397333 1.792-29.397333 24.704 0 111.317333-76.928 224-224 224h-35.541333zM170.624 906.666667a32.042667 32.042667 0 0 1-31.872-29.44l-42.666667-533.333334a32.042667 32.042667 0 0 1 29.354667-34.474666c17.066667-1.408 33.024 11.733333 34.432 29.354666l42.666667 533.333334a32.042667 32.042667 0 0 1-31.914667 34.56z" p-id="5523"></path></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="2341213" data-replyname="chendong152"> <a target="_blank" href="https://me.csdn.net/chendong152"><img src="https://profile.csdnimg.cn/F/B/7/3_chendong152" username="chendong152" alt="chendong152" class="avatar"></a> <div class="right-box "> <div class="new-info-box clearfix"> <a target="_blank" href="https://me.csdn.net/chendong152"><span class="name ">chendong152</span></a><span class="date" title="2012-08-17 15:19:11">7年前</span><span class="floor-num">#5楼</span><span class="new-comment">一定要顶。辛苦是肯定的,鼓励是必须的,效果是明显的。结果是....不知道的。哈哈</span><span class="new-opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="2341213"><svg t="1569296798904" class="icon " viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5522" width="200" height="200"><path d="M726.016 906.666667h-348.586667a118.016 118.016 0 0 1-116.992-107.904l-29.013333-362.666667A117.589333 117.589333 0 0 1 348.458667 309.333333H384c126.549333 0 160-104.661333 160-160 0-51.413333 39.296-88.704 93.397333-88.704 36.906667 0 71.68 18.389333 92.928 49.194667 26.88 39.04 43.178667 111.658667 12.714667 199.509333h95.530667a117.418667 117.418667 0 0 1 115.797333 136.106667l-49.28 308.522667a180.608 180.608 0 0 1-179.072 152.704zM348.458667 373.333333l-4.48 0.170667a53.461333 53.461333 0 0 0-48.768 57.472l29.013333 362.666667c2.218667 27.52 25.6 49.024 53.205333 49.024h348.544a116.949333 116.949333 0 0 0 115.925334-98.816l49.322666-308.736a53.418667 53.418667 0 0 0-52.650666-61.781334h-144.085334a32 32 0 0 1-28.458666-46.634666c45.909333-89.130667 28.885333-155.434667 11.562666-180.522667a48.981333 48.981333 0 0 0-40.192-21.504c-6.912 0-29.397333 1.792-29.397333 24.704 0 111.317333-76.928 224-224 224h-35.541333zM170.624 906.666667a32.042667 32.042667 0 0 1-31.872-29.44l-42.666667-533.333334a32.042667 32.042667 0 0 1 29.354667-34.474666c17.066667-1.408 33.024 11.733333 34.432 29.354666l42.666667 533.333334a32.042667 32.042667 0 0 1-31.914667 34.56z" p-id="5523"></path></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="2286788" data-replyname="huangdi7922"> <a target="_blank" href="https://me.csdn.net/huangdi7922"><img src="https://profile.csdnimg.cn/6/B/9/3_huangdi7922" username="huangdi7922" alt="huangdi7922" class="avatar"></a> <div class="right-box "> <div class="new-info-box clearfix"> <a target="_blank" href="https://me.csdn.net/huangdi7922"><span class="name ">皇帝</span></a><span class="date" title="2012-07-17 10:17:28">7年前</span><span class="floor-num">#4楼</span><span class="new-comment">支持研究,但是好多语句不通</span><span class="new-opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="2286788"><svg t="1569296798904" class="icon " viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5522" width="200" height="200"><path d="M726.016 906.666667h-348.586667a118.016 118.016 0 0 1-116.992-107.904l-29.013333-362.666667A117.589333 117.589333 0 0 1 348.458667 309.333333H384c126.549333 0 160-104.661333 160-160 0-51.413333 39.296-88.704 93.397333-88.704 36.906667 0 71.68 18.389333 92.928 49.194667 26.88 39.04 43.178667 111.658667 12.714667 199.509333h95.530667a117.418667 117.418667 0 0 1 115.797333 136.106667l-49.28 308.522667a180.608 180.608 0 0 1-179.072 152.704zM348.458667 373.333333l-4.48 0.170667a53.461333 53.461333 0 0 0-48.768 57.472l29.013333 362.666667c2.218667 27.52 25.6 49.024 53.205333 49.024h348.544a116.949333 116.949333 0 0 0 115.925334-98.816l49.322666-308.736a53.418667 53.418667 0 0 0-52.650666-61.781334h-144.085334a32 32 0 0 1-28.458666-46.634666c45.909333-89.130667 28.885333-155.434667 11.562666-180.522667a48.981333 48.981333 0 0 0-40.192-21.504c-6.912 0-29.397333 1.792-29.397333 24.704 0 111.317333-76.928 224-224 224h-35.541333zM170.624 906.666667a32.042667 32.042667 0 0 1-31.872-29.44l-42.666667-533.333334a32.042667 32.042667 0 0 1 29.354667-34.474666c17.066667-1.408 33.024 11.733333 34.432 29.354666l42.666667 533.333334a32.042667 32.042667 0 0 1-31.914667 34.56z" p-id="5523"></path></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="2261820" data-replyname="x313695373"> <a target="_blank" href="https://me.csdn.net/x313695373"><img src="https://profile.csdnimg.cn/7/9/C/3_x313695373" username="x313695373" alt="x313695373" class="avatar"></a> <div class="right-box "> <div class="new-info-box clearfix"> <a target="_blank" href="https://me.csdn.net/x313695373"><span class="name ">x313695373</span></a><span class="date" title="2012-06-21 15:52:14">7年前</span><span class="floor-num">#3楼</span><span class="new-comment">楼主,请教个问题:
我在用带滚动条的窗口时,在窗口的上部一直会需要绘制标题栏,但是在收到WM_PAINT消息时,它本身对可以绘制的区域有限制,导致我画出来的标题栏无法显示,因为使用的是ScrollWindow,标题部分用下部分的窗口数据取代。现在我想知道有没有什么方法可以增加无效区域,让每次重绘时,标题栏都可以显示。您要有想法我可以发给您测试代码举报回复
- 上一页
- 1
- 下一页
WM_ERASEBKGND消息
10-19 阅读数 4585
参考文章:白乔原创:VC之美化界面篇 Windows在窗口的具体绘制之前,会发送WM_ERASEBKGND消息通知该窗口檫除背景。默认情况下,会以窗口的默认背景色清除窗口。 消息响应函数为... 博文 来自: Hisin Wang的专栏
WM_PAINT 和 WM_ERASEBKGND 消息的区别
01-11 阅读数 2109
先看看,如何获得HDC(设备句柄) 1.调用BeginPaint()。绘制范围是窗口的无效区域。通常是在WM_PAINT中调用。这个api获得HDC,在EndPaint()以后,会将窗口的无效区域置为... 博文 来自: 软件人生
WM_CTLCOLOR,WM_ERASEBKGND,WM_PAINT联系
02-07 阅读数 2354
首先感谢Rupesh Shukla大神指点Default implementation of WM_ERASEBKGND message handler erases invalidated area... 博文 来自: ChampionLai
<div class="recommend-item-box recommend-recommend-box"><div id="kp_box_59" data-pid="59"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3491668",
container: s
});
})();
分享靠写代码赚钱的一些门路
09-25 阅读数 1万+
作者 mezod,译者 josephchang10如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。今天给大家分享一个精彩...... 博文 来自: qq_33570092的博客
Win32 SDK基础(12)—— WM_PAINT消息的处理
04-13 阅读数 6701
一、引言 在计算机中,屏幕上显示的一切东西几乎都是绘制的,包括窗口、对话框、图片、以及一切文字,而WM_PAINT消息就是在绘制这些对象时,系统触发的消息。我们在计算机中的每一个操作,几乎都会触... 博文 来自: Hyman的博客
WM_PAINT介绍 及 OnPaint()函数的作用原理
02-18 阅读数 763
* WM_PAINT是窗口每次重绘都会产生的一个消息。 系统为什么不在调用Invalidate时发送WM_PAINT消息呢?又为什么非要等应用消息队列为空时才发送WM_PAINT消息呢?这是因... 博文 来自: Mirage520的专栏
WM_PAINT详解
02-28 阅读数 757
The WM_PAINT message is generated by the system and should not be sent by an application.The system ... 博文 来自: FUN
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ScfnJLvAHDnctnoHLpEicpAUSXEUHnXAniASQbtHAibbLyLmtbLiXEbHQJWiSDpEJbmnStcbEmcXnpSAQEEmpvHcAEbpnnJbvbiQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fbundled%2Fdetail%2F49%3Futm_source%3Dblogfeed1_lg&timestamp=1573805051384&signature=aca9f65c554479a88e8ff163eea7930322ad522b&adBlockFlag=1" target="_blank" title="程序员连拿3份Offer,每份工资竟超出原来薪资5万,这几点分享给你!"><h4 class="text-truncate oneline" style="width: 802px;">程序员连拿3份Offer,每份工资竟超出原来薪资5万,这几点分享给你!</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ScfnJLvAHDnctnoHLpEicpAUSXEUHnXAniASQbtHAibbLyLmtbLiXEbHQJWiSDpEJbmnStcbEmcXnpSAQEEmpvHcAEbpnnJbvbiQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fbundled%2Fdetail%2F49%3Futm_source%3Dblogfeed1_lg&timestamp=1573805051384&signature=aca9f65c554479a88e8ff163eea7930322ad522b&adBlockFlag=1" target="_blank" title="程序员连拿3份Offer,每份工资竟超出原来薪资5万,这几点分享给你!"><span class="desc oneline">作为一名老码农!Python 116K 超过 C++, 薪酬排行第一</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=ScfnJLvAHDnctnoHLpEicpAUSXEUHnXAniASQbtHAibbLyLmtbLiXEbHQJWiSDpEJbmnStcbEmcXnpSAQEEmpvHcAEbpnnJbvbiQ&adBlockFlag=1"></div></div>
Hook捕获WM_PAINT消息时遇到的问题,望大家帮忙,谢谢
我的目的:在一个软件的视图窗口中添加个网格。 我的思路:用钩子捕获这个窗口的wm_paint消息,然后在钩子过程函数中画这个网格。 我的问题: 1、用QQ的聊天窗口测试的时候,可以画出网格了,但更改为 论坛
中国最顶级的一批程序员,从首富到首负!
09-24 阅读数 2万+
过去的20年是程序员快意恩仇的江湖时代通过代码,实现梦想和财富有人痴迷于技术,做出一夜成名的产品有人将技术变现,创办企业成功上市这些早一代的程序员们创造的奇迹引发了一浪高...... 博文 来自: 纯洁的微笑
<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
<div class="d-flex">
<div class="blog-expert-recommend">
<div class="blog-expert">
<div class="blog-expert-flexbox" data-report-view="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/lvwenshuai" target="_blank"><img src="https://profile.csdnimg.cn/6/3/B/3_lvwenshuai" username="lvwenshuai" alt="lvwenshuai" title="lvwenshuai"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><span class="blog-expert-button-follow btn-red-follow" data-name="lvwenshuai" data-nick="lvwenshuai">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/lvwenshuai" target="_blank"><h5 class="oneline" title="lvwenshuai">lvwenshuai</h5></a></span> <p></p><p class="article-num" title="102篇文章"> 102篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/wangyao1052" target="_blank"><img src="https://profile.csdnimg.cn/D/A/E/3_wangyao1052" username="wangyao1052" alt="HisinWang" title="HisinWang"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><span class="blog-expert-button-follow btn-red-follow" data-name="wangyao1052" data-nick="HisinWang">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/wangyao1052" target="_blank"><h5 class="oneline" title="HisinWang">HisinWang</h5></a></span> <p></p><p class="article-num" title="226篇文章"> 226篇文章</p><p class="article-num" title="排名:6000+"> 排名:6000+</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/hot_flygui" target="_blank"><img src="https://profile.csdnimg.cn/D/6/E/3_hot_flygui" username="hot_flygui" alt="hot_flygui" title="hot_flygui"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><span class="blog-expert-button-follow btn-red-follow" data-name="hot_flygui" data-nick="hot_flygui">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/hot_flygui" target="_blank"><h5 class="oneline" title="hot_flygui">hot_flygui</h5></a></span> <p></p><p class="article-num" title="10篇文章"> 10篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/coolboylai2" target="_blank"><img src="https://profile.csdnimg.cn/3/9/B/3_coolboylai2" username="coolboylai2" alt="ChampionLai" title="ChampionLai"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><span class="blog-expert-button-follow btn-red-follow" data-name="coolboylai2" data-nick="ChampionLai">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/sdeeds/article/details/6859530"}"><a href="https://blog.csdn.net/coolboylai2" target="_blank"><h5 class="oneline" title="ChampionLai">ChampionLai</h5></a></span> <p></p><p class="article-num" title="80篇文章"> 80篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div></div>
</div>
</div>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/gaosen_bit/article/details/2310475?utm_source=blogxgwz2","strategy":"searchFromBaidu1","index":"5"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/gaosen_bit/article/details/2310475?utm_source=blogxgwz2","strategy":"searchFromBaidu1","index":"5"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/gaosen_bit/article/details/2310475?utm_source=blogxgwz2","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/gaosen_bit/article/details/2310475?utm_source=blogxgwz2","strategy":"searchFromBaidu1","index":4,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/gaosen_bit/article/details/2310475?utm_source=blogxgwz2" target="_blank"> <h4 class="text-truncate oneline" style="width: 766px;">处理<em>WM_ERASEBKGND</em>消息的实用方法 - gaosen_bit的专栏 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">10-28</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/h_h_w/article/details/40936549","strategy":"searchFromBaidu1","index":"6"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/h_h_w/article/details/40936549","strategy":"searchFromBaidu1","index":"6"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/h_h_w/article/details/40936549","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/h_h_w/article/details/40936549","strategy":"searchFromBaidu1","index":5,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/h_h_w/article/details/40936549" target="_blank"> <h4 class="text-truncate oneline" style="width: 766px;"><em>WM_ERASEBKGND</em>消息及位图背景与透明的实现 - h_h_w的专栏</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">12-11</span> </p> </div> </a> </div>
花了20分钟,给女朋友们写了一个web版群聊程序
11-28 阅读数 3万+
参考博客[1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example 博文
Docker 零基础从入门到使用
09-24 阅读数 1万+
诺!这只可爱的小鲸鱼就是docker了!Docker 是什么?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 W... 博文 来自: 小白一个
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=AJbLpAJibciEbfvHDtEpnDyJEStHncEnnbALEtifbQvAbHntpSbXcSAHSJmtptJSLfmHJQWnpbpcfcbJbynEtfAcvHEpcEvEpEtQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcombo%2Fdetail%2F1473%3Futm_source%3Dfeedblog&timestamp=1574923774485&signature=de4276574e6fdd29006608cac47252397c09e73e&adBlockFlag=1" target="_blank" title="程序员的遗憾:忽视数学必定后悔!"><h4 class="text-truncate oneline" style="width: 802px;">程序员的遗憾:忽视数学必定后悔!</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=AJbLpAJibciEbfvHDtEpnDyJEStHncEnnbALEtifbQvAbHntpSbXcSAHSJmtptJSLfmHJQWnpbpcfcbJbynEtfAcvHEpcEvEpEtQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcombo%2Fdetail%2F1473%3Futm_source%3Dfeedblog&timestamp=1574923774485&signature=de4276574e6fdd29006608cac47252397c09e73e&adBlockFlag=1" target="_blank" title="程序员的遗憾:忽视数学必定后悔!"><span class="desc oneline">如果你没有抓住机会学习数学,迟早有一天会后悔!</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=AJbLpAJibciEbfvHDtEpnDyJEStHncEnnbALEtifbQvAbHntpSbXcSAHSJmtptJSLfmHJQWnpbpcfcbJbynEtfAcvHEpcEvEpEtQ&adBlockFlag=1"></div></div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_387","dest":"https://blog.csdn.net/zsc2014030403015/article/details/49433135","strategy":"searchFromBaidu1","index":"9"}" data-report-click="{"mod":"popu_387","dest":"https://blog.csdn.net/zsc2014030403015/article/details/49433135","strategy":"searchFromBaidu1","index":"9"}" data-track-view="{"mod":"popu_387","dest":"https://blog.csdn.net/zsc2014030403015/article/details/49433135","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-track-click="{"mod":"popu_387","dest":"https://blog.csdn.net/zsc2014030403015/article/details/49433135","strategy":"searchFromBaidu1","index":8,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/zsc2014030403015/article/details/49433135" target="_blank"> <h4 class="text-truncate oneline" style="width: 766px;"><em>WM_PAINT</em>与<em>WM_ERASEBKGND</em>补充 - 梧桐下的四叶草 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-11</span> </p> </div> </a> </div>
GitHub开源的10个超棒后台管理面板
09-21 阅读数 6万+
目录1、AdminLTE2、vue-Element-Admin3、tabler4、Gentelella5、ng2-admin6、ant-design-pro7、blur-admin8、iview-ad... 博文 来自: 不脱发的程序猿
SDK问题?消息WM_ERASEBKGND的处理,能解释一下背景的处理吗?问题在下面,谢谢!
// 程序使用MFC头文件,须MFC支持! #include "afxwin.h" #include "resource.h"// 资源 //#include "sysmets.h" LRESULT 论坛
GetMessage()与PeekMessage(),以及WM_PAINT消息相关
11-16 阅读数 10
为什么80%的码农都做不了架构师?>>> ...... 博文 来自: weixin_34125592的博客
关于WM_ERASEBKGND消息,避免了闪烁,但是不理解
我的程序需要不断的刷新窗口,我也知道用内存设备描述表来缓冲,但是屏幕还是在闪烁 我就加了两行语句 case WM_ERASEBKGND: return 0; 然后闪烁就消失了,这是为什么啊 论坛
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ctQpJpAnnniQAHnJcAJJEnbiADbbyHcDiAAiLfUtLHnXAJDiHLbJivomHiQtWtAEcbnmntcbEAonntnUomtbiSASJmAJiJbHSDQQ&k=AI&dest=https%3A%2F%2Fedu.csdn.net%2Ftopic%2Fai30%3Futm_source%3Dblogfeed2&timestamp=1573805049681&signature=160f4cb6a8950bb82c66efb0179612e4ec3cdb18&adBlockFlag=1" target="_blank" title="做Java半年,挣的不如AI 1个月?真假!第二句泪目.."><h4 class="text-truncate oneline" style="width: 802px;">做Java半年,挣的不如AI 1个月?真假!第二句泪目..</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ctQpJpAnnniQAHnJcAJJEnbiADbbyHcDiAAiLfUtLHnXAJDiHLbJivomHiQtWtAEcbnmntcbEAonntnUomtbiSASJmAJiJbHSDQQ&k=AI&dest=https%3A%2F%2Fedu.csdn.net%2Ftopic%2Fai30%3Futm_source%3Dblogfeed2&timestamp=1573805049681&signature=160f4cb6a8950bb82c66efb0179612e4ec3cdb18&adBlockFlag=1" target="_blank" title="做Java半年,挣的不如AI 1个月?真假!第二句泪目.."><span class="desc oneline">2019是整个互联网行业加速洗牌的一年,互联网大佬快速入局AI领域,你怎么看?</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=AI&m=ctQpJpAnnniQAHnJcAJJEnbiADbbyHcDiAAiLfUtLHnXAJDiHLbJivomHiQtWtAEcbnmntcbEAonntnUomtbiSASJmAJiJbHSDQQ&adBlockFlag=1"></div></div>
一个老外关于 WM_CTLCOLOR,WM_ERASEBKGND给出的结论
一个老外关于 WM_CTLCOLOR,WM_ERASEBKGND给出的结论: 结论是同是在wm_erasebkgnd,wm_ctlcolor里修改对话框的背景颜色引起的问题 Default imple 论坛
处理WM_ERASEBKGND消息的实用方法
04-21 阅读数 2668
今天花了很长时间解决这个问题:主窗口覆盖整个屏幕,由于每次点击最小化按钮时,子窗口首先隐藏,因而其早先所占据主窗口的矩形区域便失效(invalid),此时系统向主窗口发送一个WM_ERASEBKGN... 博文 来自: gaosen_bit的专栏
10 个最难回答的 Java 问题
08-27 阅读数 2194
1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答... 博文 来自: aaa13268的博客
60 个让程序员崩溃的瞬间,哈哈哈哈哈哈哈哈哈
12-18 阅读数 1万+
阅读本文大概需要 2.3333 分钟。前方高能,每一个程序员看完,你不笑死个人,你来找我,我自己看了好几遍,反正笑的停不下来,太特么有才了。1. 公司实习生找 Bug2....... 博文 来自: stormzhang的专栏
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=LEcbftnSvLpibHSDAiJDpiJypHpcfLcnSJbUbHtpAAXJpLUHbnELEJLmtpAvybnpLLHQpbWtcbtLptDifoLSDctEiDyHEcLQEJnQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcombo%2Fdetail%2F1473%3Futm_source%3Dblogfeed2&timestamp=1575356069198&signature=d5e2691ffb59978d02538008ff96970ac64d6855&adBlockFlag=1" target="_blank" title="热议:程序员要不要学数学?我被结果整懵了"><h4 class="text-truncate oneline" style="width: 802px;">热议:程序员要不要学数学?我被结果整懵了</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=LEcbftnSvLpibHSDAiJDpiJypHpcfLcnSJbUbHtpAAXJpLUHbnELEJLmtpAvybnpLLHQpbWtcbtLptDifoLSDctEiDyHEcLQEJnQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcombo%2Fdetail%2F1473%3Futm_source%3Dblogfeed2&timestamp=1575356069198&signature=d5e2691ffb59978d02538008ff96970ac64d6855&adBlockFlag=1" target="_blank" title="热议:程序员要不要学数学?我被结果整懵了"><span class="desc oneline">我经常在后台收到各种各样的问题,有一个问题一直被问起:程序员要不要学数学?</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=LEcbftnSvLpibHSDAiJDpiJypHpcfLcnSJbUbHtpAAXJpLUHbnELEJLmtpAvybnpLLHQpbWtcbtLptDifoLSDctEiDyHEcLQEJnQ&adBlockFlag=1"></div></div>
对计算机专业来说学历真的重要吗?
09-27 阅读数 14万+
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记... 博文 来自: 启舰
WM_PAINT消息
05-25 阅读数 261
(1)刻意产生WM_PAINT消息InvalidateRect 或者 InvalidataRgn(2)在WM_PAINT处理期间,如果使用了BeginPaint之后,整个显示区域 变成了有效或者,使用... 博文 来自: 糯诺诺米团
还是这个WM_ERASEBKGND 和WM_PAINT的问题,重绘ING
之前觉得已经理解了,但怎么理论和实践就是有差距呢, 原因如下: LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lpa 论坛
wm_paint 消息详细解析
06-23 阅读数 227
WM_PAINT是Windows窗口系统中一条重要的消息,应用程序通过处理该消息实现在窗口上的绘制工作。1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送WM_PAINT消息:当... 博文 来自: jnwangcan的专栏
Hook消息WM_PAINT的时候,钩子类型确切的是用哪个?
WH_CALLWNDPROC / WH_GETMESSAGE还是别的?我都用过了,总是拦截不到。 是不是WH_GETMESSAGE的过滤函数名一定要是GetMsgProc?不一定吧? 搜索了一下,很多 论坛
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=cQEQHtciiDAEAEtyLLAHAcbEfELviAAQtHELXbJpfLStHpitSLotQtbnLLfSJLHQpWcQEEQvSLSSUbLAEXActobHSAicLnQbSbLQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Ftopic%2Fpython115%3Futm_source%3Dblogfeed5&timestamp=1576131949153&signature=ddaf34df8950e0859ba2ff9c655eaea62dac469f&adBlockFlag=1" target="_blank" title="初学编程,我为什么建议你选择Python?"><h4 class="text-truncate oneline" style="width: 802px;">初学编程,我为什么建议你选择Python?</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=cQEQHtciiDAEAEtyLLAHAcbEfELviAAQtHELXbJpfLStHpitSLotQtbnLLfSJLHQpWcQEEQvSLSSUbLAEXActobHSAicLnQbSbLQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Ftopic%2Fpython115%3Futm_source%3Dblogfeed5&timestamp=1576131949153&signature=ddaf34df8950e0859ba2ff9c655eaea62dac469f&adBlockFlag=1" target="_blank" title="初学编程,我为什么建议你选择Python?"><span class="desc oneline">PYPL编程语成为最受欢迎的编程语言,这是为什么?</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=cQEQHtciiDAEAEtyLLAHAcbEfELviAAQtHELXbJpfLStHpitSLotQtbnLLfSJLHQpWcQEEQvSLSSUbLAEXActobHSAicLnQbSbLQ&adBlockFlag=1"></div></div>
WM_ERASEBKGND的返回值
WM_ERASEBKGND的返回值: Return value Type: LRESULT An application should return nonzero if it erases the 论坛
一生必看的纪录片
10-08 阅读数 8118
下面按对自己的影响/感悟程度来排序《人生七年》概要:人生七年》又称作《56up》也是非常多的网友在看过之后,都让自己陷入了一些思考,对人生思考有一定影响力的纪录片之一导演从1964年开始第一部,在英国... 博文 来自: 我的E家
为什么面向对象糟透了?
09-23 阅读数 3万+
又是周末,编程语言“三巨头”Java,Lisp和C语言在HelloWorld咖啡馆聚会。服务员送来咖啡的同时还带来了一张今天的报纸,三人寒暄了几句,C语言翻开了...... 博文 来自: 码农翻身
面试官,不要再问我三次握手和四次挥手
10-08 阅读数 15万+
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的:面... 博文 来自: 猿人谷
WM_ERASEBKGND 与打开对话框闪烁有什么关系
07-01 阅读数 764
网上很多帖子多说为了解决打开对话框时闪烁的问题,需要重载WM_ERASEBKGND消息处理函数,并返回true。但是都没有解释具体的原因。 我们了解一下windows的刷新机制就... 博文 来自: eboyhaining的专栏
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ELinittAEnSJcQvSHEtcJSJbcbEypHcSDDASJttEEiScpHbAEXnLvLiJHvtSyvnLSHQtWQAAoJtbbcLiycXXAbEbvpbHStcQJSEQ&k=&dest=https%3A%2F%2Fmall.csdn.net%2Fv2%2F%23%2Fproduct%2F1586&timestamp=1573805049461&signature=70dc115ab9b2ca70b6fcc0edf0a8a7187e4a2879&adBlockFlag=1" target="_blank" title="一本可陪伴一辈子的笔记本"><h4 class="text-truncate oneline" style="width: 802px;">一本可陪伴一辈子的笔记本</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=ELinittAEnSJcQvSHEtcJSJbcbEypHcSDDASJttEEiScpHbAEXnLvLiJHvtSyvnLSHQtWQAAoJtbbcLiycXXAbEbvpbHStcQJSEQ&k=&dest=https%3A%2F%2Fmall.csdn.net%2Fv2%2F%23%2Fproduct%2F1586&timestamp=1573805049461&signature=70dc115ab9b2ca70b6fcc0edf0a8a7187e4a2879&adBlockFlag=1" target="_blank" title="一本可陪伴一辈子的笔记本"><span class="desc oneline">可擦可写,可循环利用,支持OCR识别,让你的笔记本变得智能</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=ELinittAEnSJcQvSHEtcJSJbcbEypHcSDDASJttEEiScpHbAEXnLvLiJHvtSyvnLSHQtWQAAoJtbbcLiycXXAbEbvpbHStcQJSEQ&adBlockFlag=1"></div></div>
关于BeginPaint和WM_ERASEBKGND
10-25 阅读数 25
1。当操作系统意识到无效区域的时候,会向窗口发送WM_PAINT消息。必须调用Beginpaint(),BeginPaint用来为DC获得一个无效区域。以后的绘制只会在这无效区域里面绘制。 2。同时,... 博文 来自: daojin505的专栏
MiniGUI消息大全
03-23 阅读数 1362
1.MSG_DESTROY调用DestroyMainWindow/DestroyWindow时发送到窗口过程中例:程序在MSG_DESTROY消息中销毁被托管主窗口的位图、字体等case MSG_DE... 博文 来自: 曾经沧海
除了wm_erasebkgnd会擦除背景,还有什么消息会擦出背景
wm_create: getdc movetoex lineto releasedc return 0; break; wm_erasebkgnd: //这里特殊处理了 return 1; //简单的 论坛
wm_paint和wm_ncpaint
我在wm_paint消息里面用下面代码在NC上写了一行文字 GetClientRect(hWnd, &ClientRect); FillRect(hdc, &ClientRect, CreateBru 论坛
WM_CREATE与WM_PAINT之间是什么关系
04-05 阅读数 811
程序如下: switch(iMessage) { case WM_CREATE: ... ... 博文 来自: liubande的专栏
<div class="recommend-item-box recommend-recommend-box"><div class="content" style="width: 852px;"><link rel="stylesheet" href="https://www.csdn.net/company/css/edu-recommend-1.0.1.css"><div class="edu-ad-list"><div class="recommend-item-box type_blog clearfix"><div class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=bcApfbJAvJJbHDLcUiiHicUfELALncbLEJHEitXtALSEXHJLSAynvAmHQStESAiLpWSinnttQmAyfSiDLvJQALbtEpiLXEHtctQQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcourse%2Fdetail%2F26109%3Futm_source%3Dblogfeed_pc&timestamp=1573805051036&signature=1602261e38c44490cd4a7a4a6aae43f6618ae497&adBlockFlag=1" target="_blank" title="4个实战项目,彻底掌握深度学习!"><h4 class="text-truncate oneline" style="width: 802px;">4个实战项目,彻底掌握深度学习!</h4></a><p class="content" style="width: 852px;"><a href="https://kunyu.csdn.net?d=2&m=bcApfbJAvJJbHDLcUiiHicUfELALncbLEJHEitXtALSEXHJLSAynvAmHQStESAiLpWSinnttQmAyfSiDLvJQALbtEpiLXEHtctQQ&k=&dest=https%3A%2F%2Fedu.csdn.net%2Fcourse%2Fdetail%2F26109%3Futm_source%3Dblogfeed_pc&timestamp=1573805051036&signature=1602261e38c44490cd4a7a4a6aae43f6618ae497&adBlockFlag=1" target="_blank" title="4个实战项目,彻底掌握深度学习!"><span class="desc oneline">10小时玩转当前流行的深度学习框架Keras</span></a><span class="blog_title_box oneline "><span class="type-show type-show-edu type-show-after">学院</span>讲师:<span class="blog_title">CSDN</span></span></p></div></div></div><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?d=2&k=&m=bcApfbJAvJJbHDLcUiiHicUfELALncbLEJHEitXtALSEXHJLSAynvAmHQStESAiLpWSinnttQmAyfSiDLvJQALbtEpiLXEHtctQQ&adBlockFlag=1"></div></div>
重载OnEraseBkgnd()
09-07 阅读数 66
重载OnEraseBkgnd()在使用VC进行绘图时,最郁闷的就是屏幕闪烁问题。有时只能使用双缓冲去解决,当然更多的时候是去忍受。有没有什么这种的方法?有,那就是重载OnEraseBkgnd()函数。... 博文 来自: mmdev
启动mysql服务
sudo /usr/local/mysql/support-files/mysql.server start
停止mysql服务
sudo /usr/loc…
博文
<div class="recommend-item-box recommend-recommend-box"><div id="_44c4j1dzbec" style=""><iframe width="900" frameborder="0" height="90" scrolling="no" src="https://rabc2.iteye.com/tgcwer?ros=_R&gsn=_RR&ns=LUV_SXXZ&vde=8KKGJ0U-0Td0Td2CF70y3J4E0yE5K0TdJ4554J0Td1IK93C50Td45K19CJ0TdXZW_WUR&zcs=TW_4R5UXRTWX34XT_SRYT1S56W_SRUYY&zc=SSSYTOU_Y&kxd=S&zcc=SUZUOSVSWT&nsc=R&kbs=T&zmc=SUZUOYST&nbs=R&ohzc=SSSRRT,SSRRSS&mom=srdzZ&nks=S&nm=U&zsc=zSOzS&ndw=frkjynmqr&dzb=SWYXSXUTXRTVY&zbyd=T&zkb=SVVROZXR&rm4=l90c&aj8=s95n9&7x6=if1v8&x81=1nsmn&4z7=4koum&swt=1"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
最近区块链这个玩意又被市场搞的很是火热,相信大部分人都不太清楚这玩意到底是怎么样的一个概念,它来了,它来了,它到底是啥~ 国家都开始发文支持了,下面是一个通俗易懂的…
博文
比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是…
博文
根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。
所谓的兼职职位众…
博文
<div class="recommend-item-box recommend-recommend-box"><div id="_eq07w3daoug" style=""><ins class="txxfbmxf" style="width:0px;height:0px;cursor:auto;"></ins><iframe width="900" frameborder="0" height="90" scrolling="no" src="https://rabc2.iteye.com/qxyukufvb?ros=_R&gsn=_RR&ns=LUV_SXXZ&vde=8KKGJ0U-0Td0Td2CF70y3J4E0yE5K0TdJ4554J0Td1IK93C50Td45K19CJ0TdXZW_WUR&zcs=TW_4R5UXRTWX34XT_SRYT1S56W_SRUYY&zmc=SUZUOYST&nsc=R&nm=U&zsc=zSOzS&zc=SSWZTOU_Y&ndw=frkjynmqr&nks=T&zkb=SVVROZXR&kxd=S&mom=srdzZ&dzb=SWYXSXUTXRTVY&nbs=S&zbyd=T&zcc=SUZUOSVSWT&ohzc=SSSRRT,SSRRSS&kbs=T&mg10=2ixd&swt=1"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/production/res/rxjg.js?pkcgstj=jm"></script></div>
程序员接私活怎样防止做完了不给钱?
10-31 阅读数 2万+
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。
那…
博文
通俗易懂地给女朋友讲:线程池的内部原理
11-04 阅读数 8869
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”... 博文
作为一个程序猿,Java集合类可以说是我们在工作中运用最多、最频繁的类。相比于数组(Array)来说,集合类的长度可变,更加方便开发。…
博文
然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交…
博文
内容和性质
目的
活动主体
任务、对象和思维方式
单选题 (1/1 point)
下列…
博文
责编 |郭芮
出品 | CSDN(ID:CSDNnews)
JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用Ja…
博文
前言
Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个…
博文
最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。
项目中文名:狗屁不通文章生成器
项目英文名:BullshitGenerator
根据作…
博文
听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员……
996程序员做的梦:
第一场:团队招募
为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是…
博文
本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法…
博文
一、虚拟机
二、虚拟机组成
1.栈
栈帧
2.程序计数器
3.方法区
对象组成
4.本地方法栈
5.堆
GC
GC案例
一、虚拟机
同样的java代码在不…
博文
《吊打面试官》系列-消息队列基础
11-20 阅读数 1万+
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Sta... 博文
gitee上已经开源https://gitee.com/Li-Ren/blog里面有一线大厂面试点脑图,欢迎Star和PR你认为…
博文
Visual Studio Code(也称为VSCode)是一种轻量级但功能强大的跨平台源代码编辑器, 借助对TypeScript …
博文
责编 | 胡巍巍
出品 | CSDN(ID:CSDNnews)
近日,腾讯自研的万亿级分布式消息中间件TubeMQ正式开源,并捐赠给Apache基金会,成为基金会官方认可的Inc…
博文
背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法
不过,当我看了源代码之后…
博文
数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。
典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。
关系型数据库:使用关系模型把数据…
博文
开心Ing,
激动ing,
前台html代码
<div style=“margin-top: 50px;”>
…
博文
<div class="recommend-item-box type_hot_word">
<div class="content clearfix" style="width: 852px;">
<div class="float-left">
<span>
<a href="https://blog.csdn.net/yilovexing/article/details/80577510" target="_blank">
python</a>
</span>
<span>
<a href="https://blog.csdn.net/slwbcsdn/article/details/53458352" target="_blank">
json</a>
</span>
<span>
<a href="https://blog.csdn.net/csdnnews/article/details/83753246" target="_blank">
java</a>
</span>
<span>
<a href="https://blog.csdn.net/qq_35077512/article/details/88952519" target="_blank">
mysql</a>
</span>
<span>
<a href="https://blog.csdn.net/pdcfighting/article/details/80297499" target="_blank">
pycharm</a>
</span>
<span>
<a href="https://blog.csdn.net/sinyu890807/article/details/97142065" target="_blank">
android</a>
</span>
<span>
<a href="https://blog.csdn.net/gexiaoyizhimei/article/details/100122368" target="_blank">
linux</a>
</span>
<span>
<a href="https://download.csdn.net/download/xhg_gszs/10978826" target="_blank">
json格式</a>
</span>
<span>
<a href="https://www.csdn.net/gather_18/OtDaAg1sLWRvd25sb2Fk.html" target="_blank">
c# orm框架对比</a>
</span>
<span>
<a href="https://www.csdn.net/gather_1d/OtDaAg2sLWRvd25sb2Fk.html" target="_blank">
c#网页demo</a>
</span>
<span>
<a href="https://www.csdn.net/gather_16/OtDaAg3sLWRvd25sb2Fk.html" target="_blank">
c#sdf数据库连接</a>
</span>
<span>
<a href="https://www.csdn.net/gather_1a/OtDaAg4sLWRvd25sb2Fk.html" target="_blank">
c# 使用配置文件</a>
</span>
<span>
<a href="https://www.csdn.net/gather_13/OtDaAg5sLWRvd25sb2Fk.html" target="_blank">
c#float 转int</a>
</span>
<span>
<a href="https://www.csdn.net/gather_1b/OtDaEgwsLWRvd25sb2Fk.html" target="_blank">
c#报警指示灯</a>
</span>
<span>
<a href="https://www.csdn.net/gather_16/OtDaEgxsLWRvd25sb2Fk.html" target="_blank">
c#复制二维数组</a>
</span>
<span>
<a href="https://www.csdn.net/gather_18/OtDaEgysLWRvd25sb2Fk.html" target="_blank">
c# 歌词滚动</a>
</span>
<span>
<a href="https://www.csdn.net/gather_1e/OtDaEgzsLWRvd25sb2Fk.html" target="_blank">
c#获取数据库一列数据</a>
</span>
<span>
<a href="https://www.csdn.net/gather_17/OtDaEg1sLWRvd25sb2Fk.html" target="_blank">
c#中parse用法</a>
</span>
</div>
</div>
</div>
<div class="recommend-loading-box">
<img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif">
</div>
<div class="recommend-end-box" style="display: block;">
<p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
</div>
</div>
<div class="template-box">
<span>©️2019 CSDN</span><span class="point"></span>
<span>皮肤主题: 大白</span>
<span> 设计师:
CSDN官方博客 </span>
</div>
</main>
抱走了 举报回复