0
単純なGDI +プログラムをテストしようとしましたが、初期化できませんでした。 GdiplusStartupは2を返します。これは「無効なパラメータ」を意味します。デバッグモードでは、GdiplusStartupInput startInputが初期化されている(GdiplusVersion = 1 ....など)ことがわかりますので問題ありません。Visual C++ GDI +質問:GdiplusStartupは常に2を返します(無効なパラメーター)
#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);
}
おかげ
「= 0」の削除が機能します!ありがとうございました。 – ngamc
さて、それ以上のことがあります。私の答えのコードをもう一度読んでください。問題のコードのように 'gdiToken'を' ULONG_PTR'ではなく 'ULONG_PTR'と宣言する必要があります。これは非常によくある間違いであり、あなたがそれを理解して、あなたがそれを再確認しないように認識しておく必要があります。もちろん、あなたのコードではない 'startInput'を初期化する必要があります。 –
私が間違っていない場合は、MSDN [link](https://msdn.microsoft.com/en-us/library/windows/desktop/ms534067(v = vs.85).aspx)に従ってGdiplusStartupInputにコンストラクタがあり、それを初期化します。デフォルトでは、GdiplusVersionは1です。 – ngamc