| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖
标题:WndProc如何刷新动态字符
取消只看楼主 加入收藏
angelhot
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-1-9
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
WndProc如何刷新动态字符
程序代码:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_PAINT:
           {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hWnd, &ps);

         .........
        SYSTEMTIME st;
        GetLocalTime(&st);
        TCHAR cha[9] = {};
        swprintf_s(cha, _T("%hu%hs%hu%hs%hu"), st.wHour, ":", st.wMinute, ":", st.wSecond);
        //InvalidateRect(hWnd, NULL, true);
        DrawText(hdc, cha, -1, &rect, DT_WORDBREAK);
        //Sleep(1000);
                .........
        }
    }
}

为什么DrawText放在 switch (message)循环里不会重复打印时间st.wSecond变化啊?
加上InvalidateRect后,清除太快,直接都看不到显示了。
Sleep(1000)虽然能显示变化,但整个循环每1秒都会卡定。
要用什么方法刷新动态字符呢?


[此贴子已经被作者于2023-4-4 08:48编辑过]

搜索更多相关主题的帖子: 字符 message 动态 HWND 刷新 
2023-04-04 08:32
angelhot
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-1-9
收藏
得分:0 
回复 2楼 rjsp
SetTimer以时间间隔发送WM_TIMER消息InvalidateRect刷新,不需要调用KillTimer销毁时钟。
又学到新姿势,感谢rjsp版主亲授
2023-04-04 11:50
angelhot
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-1-9
收藏
得分:0 
回复 4楼 rjsp
rjsp版主:先用CreateCompatibleDC创建内存兼容DC,用CreateCompatibleBitmap创建位图,
然后在WM_TIMER计时器消息里用Rectangle和TextOutW绘制文字图形到内存兼容DC?
最后在WM_PAINT用StretchBlt将兼容DC绘制到窗口上吗?

只学了C++基础,一直都是以黑底白字的控制台作练习,对WindowsAPI函数不了解
2023-04-05 15:40
快速回复:WndProc如何刷新动态字符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.087131 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved