使用面向对象注册窗口类


void Base::RegisterWnd(HINSTANCE hInstance)
{
ZeroMemory(&WndCls, sizeof(WNDCLASSEX));
WndCls.cbSize = sizeof(WNDCLASSEX);
WndCls.hbrBackground = (HBRUSH)COLOR_WINDOW;
WndCls.hCursor = LoadCursor(NULL, IDC_ARROW);
WndCls.hIcon = LoadIcon(hInstance, NULL);
WndCls.hIconSm = LoadIcon(hInstance, NULL);
WndCls.hInstance = hInstance;
WndCls.lpfnWndProc = CallWindowProc; << What should i put here
}

我正在尝试使用面向对象的方法注册窗口类。我不知道我应该在类 cpp 中为 lpfnWndProc 放什么。对于头文件,它的外观如下所示

#pragma once
#ifndef BASE_H
#define BASE_H
#include <Windows.h>
#include <windowsx.h>
class Base
{
HWND hWnd;
WNDCLASSEX WndCls;
public:
Base();
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
void RegisterWnd(HINSTANCE hInstance);
void CreateWnd();
void ShowWnd();
~Base();
};
#endif

如果我做错了什么,请纠正我。还在学习。对不起,谢谢:)

在任何类之外声明以下内容:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

并在其他地方定义它

WndCls.lpfnWndProc = WndProc; // address of your window procedure

WndProc应该有一个开关案例来处理您需要在特定窗口类函数(C函数或类静态方法(中处理的事件或消息。

最新更新