IT技术博客大学习 共学习 共进步

标签:Windows API

共 2 篇相关文章

IT 累计浏览 5

SetWindowText 引起的死锁

在基于ltask多线程框架的游戏开发中,使用sokol_app封装窗口时遇到了启动阶段偶发黑屏的问题。经排查,死锁源于跨线程调用SetWindowTextW修改窗口标题。由于该API内部通过SendMessageW投递WM_SETTEXT消息,要求窗口线程处理完毕才能返回,而窗口线程当时正阻塞在另一个同步锁上,形成循环等待。 Windows消息机制要求通过SendMessageW发送涉及字符串生命周期管理的系统消息,因此不能简单改用PostWindowTextW避免阻塞。最终解决方案是在ltask框架内创建一个独立服务来执行SetWindowTextW,通过服务间异步消息传递修改标题指令,从而避免阻塞主帧处理流程。这一案例揭示了多线程环境下GUI消息循环与任务调度器交互时的典型死锁陷阱,关键在于理解Windows线程消息队列的同步特性,并设计解耦的线程通信机制。

IT 累计浏览 3,021

OpenGL中文字符的显示

在OpenGL的绚烂世界里,想画个中文标注却难住了不少人。这篇讲的是,作者从OpenGL自身不提供文字显示能力这个痛点出发,找到了一个巧妙的解决方案。他聚焦于Windows平台,介绍并解析了关键API函数`wglUseFontBitmapsW()`,展示了如何利用这个系统接口,将中文及单字节字符顺利地渲染到OpenGL场景中。文章直接给出了函数的声明,让读者能快速抓住实现的核心。对于需要处理图形界面中文显示的开发者来说,这个方法提供了一条清晰且实用的路径。