使用面向对象注册窗口类

时间:2014-10-30 09:38:01

标签: c++ winapi

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

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

1 个答案:

答案 0 :(得分:2)

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

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

并在别处定义

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

WndProc应该有一个switch-case来处理你需要在特定窗口类函数中处理的事件或消息(C函数或类静态方法)