Делаю обертку вокруг winapi окна, нужно затащить wndproc в класс а он статический. Вобщем WindowProc не работает почемуто.. pwnd null
#pragma once
#include "windows.h"
class Window {
protected:
HWND hwnd;
public:
LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
static LRESULT CALLBACK internal_WndProc(HWND hWnd, UINT message, WPARAM
wParam, LPARAM lParam) {
Window* pWnd;
if (message == WM_NCCREATE)
{
LPCREATESTRUCT cs = reinterpret_cast<LPCREATESTRUCT>(lParam);
pWnd = reinterpret_cast<Window*>(cs->lpCreateParams);
SetLastError(0);
if (!SetWindowLongPtr(hWnd, GWL_USERDATA, reinterpret_cast<LONG_PTR>
(pWnd)))
{
int i = 1;
}
}
else
{
pWnd = reinterpret_cast<Window*>(GetWindowLongPtr(hWnd, GWL_USERDATA));
}
if (pWnd)
{
return pWnd->WindowProc(message, wParam, lParam);
}
else
{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
Window() {
WNDCLASSW windowClass;
windowClass.style = CS_DBLCLKS | CS_PARENTDC;
windowClass.lpfnWndProc = &internal_WndProc;
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.hInstance = GetModuleHandle(NULL);
windowClass.hIcon = NULL;
windowClass.hCursor = LoadCursor(NULL, (LPTSTR)IDC_IBEAM);
windowClass.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(255, 255, 255));
windowClass.lpszMenuName = NULL;
windowClass.lpszClassName = L"MainWindowClass";
RegisterClassW(&windowClass);
this->hwnd = CreateWindowW(L"MainWindowClass", L"Window", (
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX),
GetSystemMetrics(SM_CXSCREEN) / 2 - 400,
GetSystemMetrics(SM_CYSCREEN) / 2 - 300, 800, 600, 0, 0, GetModuleHandle(NULL), 0);
ShowWindow(hwnd, 1);
UpdateWindow(hwnd);
}
};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно подключить любую СУБД к проекту Netbeans (C++, MinGW)Провёл день в попытках подключить MySQL, так и не найдя нигде инструкции или документации
Почему у функции scanf_s в Visual Studio 2013 при использовании "%s" прекращается работа в языке Си
пишу программу, необходимо считывать информацию из txt файла и записывать информацию в стрктуру