gpt4 book ai didi

c++ - CallWindowProc()生成错误5(访问被拒绝)

转载 作者:行者123 更新时间:2023-12-03 09:12:38 25 4
gpt4 key购买 nike

我正在尝试解决在执行GetLastError()时收到CallWindowProc的错误。代码如下:

static LRESULT CALLBACK editSubProc(HWND h, UINT m, WPARAM w, LPARAM l)
{
//some implementation
//GetLastError() returns 0 here
CallWindowProc(edit_proc,h,m,w,l);
}
窗口的创建如下所示:
HWND ch=CreateWindowEx(style,"Edit","",dwstyle,l,t,r-l,b-t,hwnd,0,hInst,0);
edit_proc=(WNDPROC)GetWindowLongPtr(ch,GWLP_WNDPROC);
SetWindowLongPtr(ch,GWLP_WNDPROC,(LONG_PTR)editSubProc);
现在,场景是,主循环调用 IsDialogMessage(...),后者调用 editSubProc,后者通过 CallWindowProc再次调用 editSubProc。在 editSubProc的第二次调用开始时, GetLastError返回5。
一切都从同一线程调用。这种行为的原因可能是什么?

最佳答案

GetLastError()返回发生的最后一个错误(它甚至用名称表示!)。
因此,最后发生的错误是“访问被拒绝”。
什么时候发生的?没有线索。它应该发生吗?不知道。这是个问题吗?可能不会。有很多原因可能会导致拒绝访问某些内容,也许Windows OS的某些部分只是想查看它是否有权访问某些内容。
出现错误时应调用GetLastError,并且文档告诉您调用它来获取错误代码。否则,您只会得到最后发生的错误,这可能是程序的完全不同的部分,也许是应该存在错误的地方。您正在弥补想象中的问题,而这些问题都不存在。

关于c++ - CallWindowProc()生成错误5(访问被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64444130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com