如何使用win32在D中创建Windows?

Ale*_*ann 4 winapi d win32gui

你好我想在D中用win32打开一个窗口,我有一点问题.当我调用CreateWindowA时程序崩溃.

这是我的代码:

this.fenetrePrincipale = CreateWindowA(this.classeFenetre.lpszClassName, toStringz(title), WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, null, null, this.hInstance, null);
Run Code Online (Sandbox Code Playgroud)

有:

this.classeFenetre.lpszClassName = toStringz("classeF");
this.hInstance = GetModuleHandleA(null);
Run Code Online (Sandbox Code Playgroud)

string title = "test";
Run Code Online (Sandbox Code Playgroud)

当我启动exe时,程序崩溃了,我得到了:

进程终止,状态为-1073740791

在代码:: blocks.

vha*_*lac 11

错误代码-1073740791(或0xc0000409)是由堆栈缓冲区溢出引起的(不是溢出,如在堆栈耗尽时,而是写入堆栈中不应写入的位置).

您显示的电话看起来不错.但是你没有向我们展示班级注册码,更重要的是,WndProc你注册了.我不确定你是如何在D中做的,但你WndProc需要声明__stdcall,以便它与Windows假定的调用约定相匹配.这是导致崩溃的常见问题CreateWindow.