Visual C++ GDI+ 问题:GdiplusStartup always returns 2(Invalid parameters)
Visual C++ GDI+ questions: GdiplusStartup always returns 2(Invalid paramters)
我试图测试一个简单的 GDI+ 程序,但无法对其进行初始化。 GdiplusStartup returns 2 表示 "invalid parameters"。在调试模式下,我可以看到 GdiplusStartupInput startInput 已初始化(GdiplusVersion=1 ....等)所以这不是问题。
#include <windows.h>
#include "resource.h"
#include <iostream>
#include <string>
#include <sstream>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
BOOL CALLBACK DialogProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
.... some code here ....
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
GdiplusStartupInput startInput;
ULONG_PTR* gdiToken = 0;
Gdiplus::Status status = Gdiplus::GdiplusStartup(gdiToken, &startInput, NULL);
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}
谢谢
第一个参数是错误的。 documentation 是这样描述的:
Pointer to a ULONG_PTR that receives a token.
但是你传递的是一个空指针。像这样更改代码:
GdiplusStartupInput startInput; // use default constructor to initialize struct
ULONG_PTR gdiToken;
Gdiplus::Status status = Gdiplus::GdiplusStartup(&gdiToken, &startInput, NULL);
我试图测试一个简单的 GDI+ 程序,但无法对其进行初始化。 GdiplusStartup returns 2 表示 "invalid parameters"。在调试模式下,我可以看到 GdiplusStartupInput startInput 已初始化(GdiplusVersion=1 ....等)所以这不是问题。
#include <windows.h>
#include "resource.h"
#include <iostream>
#include <string>
#include <sstream>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
BOOL CALLBACK DialogProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
.... some code here ....
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
GdiplusStartupInput startInput;
ULONG_PTR* gdiToken = 0;
Gdiplus::Status status = Gdiplus::GdiplusStartup(gdiToken, &startInput, NULL);
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}
谢谢
第一个参数是错误的。 documentation 是这样描述的:
Pointer to a ULONG_PTR that receives a token.
但是你传递的是一个空指针。像这样更改代码:
GdiplusStartupInput startInput; // use default constructor to initialize struct
ULONG_PTR gdiToken;
Gdiplus::Status status = Gdiplus::GdiplusStartup(&gdiToken, &startInput, NULL);