CreateWindowEx(..) を呼び出す前に、エラーはありません。また、CreateWindowEx は NULL を返しません。そして興味深いことに、ShowWindow を呼び出した後にウィンドウが表示されます。
ご覧のとおり、コードにはエラー コードを書き込む 2 つのメッセージ ボックスがあります。最初の 1 つは 126 を書き込み、もう 1 つは 0 を書き込みます。
(エラー 126 意味: ERROR_MOD_NOT_FOUND 126 (0x7E) 指定されたモジュールが見つかりませんでした。)
ウィンドウが作成された後、画像でわかるようにウィンドウが正しく機能しません。ウィンドウが作成された領域のポインターが読み込み位置などにあり、マウスカーソルをウィンドウに移動すると、ウィンドウが機能しません。矢印は表示されますが、サイズ変更カーソルは表示されません。
私の英語で申し訳ありませんが、助けてくれてありがとう。
コード: WinDeneme.cpp
// WinDeneme.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
const wchar_t *AppName = L"Example";
unsigned int ClassID=0;
wchar_t Error[100];
LRESULT CALLBACK Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
wchar_t *ClassName = (wchar_t*)malloc(sizeof(wchar_t) * 100);
swprintf(ClassName,100,L"%s_%d",AppName,ClassID);
ClassID++;
WNDCLASS *Class = (WNDCLASS*)calloc(1,sizeof(WNDCLASS));
Class->lpszClassName = ClassName;
Class->hInstance = hInstance;
Class->lpfnWndProc = (WNDPROC)Proc;
RegisterClass(Class);
HWND Win = CreateWindowEx(
0, // Optional window styles.
ClassName, // Window class
AppName, // Window text
WS_OVERLAPPEDWINDOW, // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, 200, 200,
NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);
swprintf(Error,100,L"%d",GetLastError());
MessageBox(0,Error,L"Error",MB_OK); // 126
ShowWindow(Win,nCmdShow);
swprintf(Error,100,L"%d",GetLastError());
MessageBox(0,Error,L"Error",MB_OK); // 0
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return EXIT_SUCCESS;
}
LRESULT CALLBACK Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
EndPaint(hwnd, &ps);
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
stdafx.h
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
#include <tchar.h>
画像(カーソルが印刷画面に表示されないため、カメラを使用しました):
**編集:追加することでポインターの問題を解決しました
Class->hCursor = LoadCursor(NULL, IDC_ARROW);
しかし、VS2012 Express ではまだエラー 126 が発生します。