通过按钮移动图片,老是闪烁

nicolaspm 2011-01-26 03:07:20
void CMyDLLImpl::draw(HWND hwnd, RECT & rc)
{
m_hWnd = hwnd;
//m_rc = &rc;
PAINTSTRUCT ps;
HDC hDC,hCDC;

hDC = BeginPaint(hwnd,&ps);
hCDC = CreateCompatibleDC(hDC);
m_repanitRc.bottom = rc.bottom;
m_repanitRc.top = rc.top;
m_repanitRc.left = rc.left;
m_repanitRc.right = rc.right;
m_hBitmap =LoadBitmap(GetModuleHandle("MyDll.dll"),
MAKEINTRESOURCE(IDB_BITMAP2));

HBRUSH brush = CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)brush);

FillRect(hCDC,&rc,brush);

SelectObject(hCDC,m_hBitmap);
//ExcludeClipRect(hDC,m_rc.left,m_rc.top,m_rc.right,m_rc.bottom);

BitBlt(hDC,0,0,rc.right,rc.bottom,
hCDC,m_rc.left,m_rc.top,SRCCOPY);

DeleteDC(hCDC);
EndPaint(hwnd,&ps);
::InvalidateRect(hwnd,&rc,FALSE);

};

void CMyDLLImpl::on_btn_up_pressed()
{
m_rc.bottom += 5;
m_rc.top += 5;
::InvalidateRect(m_hWnd,&m_repanitRc,TRUE);
}
有什么办法解决吗?
...全文
64 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihefe 2011-01-27
  • 打赏
  • 举报
回复
是否显卡驱动没安装
skyaspnet 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 nicolaspm 的回复:]
void CMyDLLImpl::draw(HWND hwnd, RECT & rc)
{
m_hWnd = hwnd;
//m_rc = &rc;
PAINTSTRUCT ps;
HDC hDC,hCDC;

hDC = BeginPaint(hwnd,&ps);
hCDC = CreateCompatibleDC(hDC);
m_repanit……
[/Quote]

建议预加载图片,制造一个淡入淡出的效果,这样太生硬,自然闪烁了
mmidd 2011-01-26
  • 打赏
  • 举报
回复
在, botton 的 窗口重新绘里调用加载图片

不要在bonnon 的容器里的ondraw里加载图片
nicolaspm 2011-01-26
  • 打赏
  • 举报
回复
发错区了,怎么办??

20,398

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧