首页 > 其他分享 >关于 Gdiplus api 调用的bug解决以及注意事项

关于 Gdiplus api 调用的bug解决以及注意事项

时间:2023-11-13 11:00:32浏览次数:35  
标签:调用 代码 Gdiplus api Graphics 更换 bug

1. 加入空间命,以识别这是Gdiplus的类与函数


2. 调用前需调用    
Gdiplus::GdiplusStartupInput gsi;
ULONG_PTR pToken;
Gdiplus::Status s = Gdiplus::GdiplusStartup(&pToken, &gsi, NULL);
用完Gdiplus函数后调用
Gdiplus::GdiplusShutdown(pToken);
如果不调用,各个Gdiplus的类将初始化失败,类的GetLastStatus()函数将返回GdiplusNotInitialized。
通过查询Graphics api得知。

3. 重点:一般通过
Gdiplus::Graphics* pGr = Gdiplus::Graphics::FromHDC(hDC);
获取该DC的Graphics类指针,在OnPaint函数中使用,并此函数不能使用窗体指针,否则Gdiplus api将返回ObjectBusy。
经过一两天排查才发现此问题引起的ObjectBusy。先是排在代码处OnPaint调用处,更换不同的Brush(如从PathGradientBrush到SolidBrush的更换),在OnButtonClick处调用,更换DC(从CPaintDC到窗口DC的更换),加上错误检查,再到与能正常调用Gdiplus的项目文件代码比对,更换Dialog资源,最后删除作不用的代码,直到换上可用的Gdiplus代码后,能正常运行,再看以的代码,发现有对窗体指针的使用,最终更换为变量代替后,代码正常运行。

标签:调用,代码,Gdiplus,api,Graphics,更换,bug
From: https://www.cnblogs.com/freemindblog/p/17828686.html

相关文章

  • 从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?
    引言在OpenAIDevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新。CEOSamAltman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自己的需求打造个性化的GPT,并分享至GPTStore。这一消息对于受AI影响广泛的各行各业都具有深远的意义。不仅如此,OpenA......
  • idea中的 debug 中小功能按钮都代表的意思
    1.stepover步过----->一行一行的往下走,如果这一行中有方法那么不会进入该方法,直接一行一行往下走,除非你在该方法中打入断点2.stepinto步入--->可以进入方法内部,但是只能进入自己写的方法内部,而不会进入方法的类库中3.Forcestepinto强制步入---->可以步入任何方法,包括......
  • Kubernetes API Codec 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Codec就是用来做序列化工作的,它主要用在两个地方:一个是通过HTTP协议跟客户端进行交互时,会对传输的数据进行序列化和反序列化,将字节流类型的数据转换成对应的API对象,或者是将API对象转换成对......
  • Kubernetes API Scheme 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Scheme就是其实现原理的一项重要机制,在平时的开发中也经常会遇到,本篇文章就对其进行下分析。Scheme起到了一个类型(Type)注册中心的作用,在APIServer内部,全局只有一个Scheme实例,各个版本的API......
  • Kubernetes API 多版本和序列化
    前言三年前在分析KuberneteAPIServer时,就经常遇到两个东西,一个是Scheme,一个是Codec,当时对它们并不是很理解,也没有去细究,但是后来越来越多的能够遇见它们,尤其是在做KubernetesAPI相关的开发时,Scheme的出镜率很高,于是查了下资料才知道,原来他们跟Kubernetes的API多版本和序列化有......
  • kube-apiserver源码阅读
    kubernetes代码版本:v1.20.2个人认为kube-apiserver是k8s中最核心的组件,承上启下,无论是k8s其他组件还是是外部客户端都需要跟kube-apiserver组件进行交互,kube-apiserver负责接受请求并将数据持久化到后端存储(一般来说就是etcd.)。下面是个人关于kube-apiserver代码阅读的一些记......
  • vscode python remote debug极速入门
    本文适用范围主要适用于debugpython程序,尤其是深度学习刚入门需要使用remote连接到linux进行程序运行,想调试一下的同学。当然非深度学习也可以参考食用本文哈哈哈。极速入门版提前准备:代码仓库已经拉取到linux上面,且已经知道运行的方式。比如:项目的启动命令为:pythonpret......
  • 使用 AJAX、PHP 和服务器发送事件从 OpenAI 的 API 流式传输数据
    如何使用服务器发送事件(SSE)将数据从上述API流式传输到使用JavaScript和PHP的浏览器客户端?我已经研究这个问题好几个小时了,但我似乎无法弄清楚出了什么问题。作为参考,我尝试在这里调整解决方案:StreamDATAFromopenaiGPT-3APIusingPHP我的代码的其余部分或多或少与上......
  • 接口开放太麻烦?试试阿里云API网关吧
    前言我在多方合作时,系统间的交互是怎么做的?这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全、权限、监控、流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放平台来支撑。但为了开放几个接口就要做一个开放平台,实在是不合算。为此阿里云为......
  • API
    常用APIAPI:应用程序编程接口就是JAVA帮我们已经写好了一些程序,如:类,方法,等,Object类Object是所有类的祖宗toString()//返回对象的字符串表现形式equals(Objecto)//判断两个对象是否相等代码实例publicstaticvoidmain(String[]args){Students=newStu......