WNDCLASS(窗口类)和hWnd的关系

WNDCLASS(窗口类)和hWnd的关系

ex:
WNDCLASS wndclass;
wndclass.lpfnWndProc = wndProc;
wndclass.lpszClassName="the name";
RegisterClass(&wndclass);

HWND hwnd=CreateWindow("the name","window text",...);


HWND hwnd=CreateWindow("the name","window text",...);
CreateWindow第一个参数是窗口类名称,这个必须是已经注册过的,所以它是取决于你想创建哪一种窗口。例如,radio button, check box, push button 都是 button。 Group box, eched line, image box, static 都是 static。
可以用GetClassName来得到窗口类的名字。


CreateWindow第二个参数就是窗口显示的名称。可以用GetWindowText, SetWindowTest来操作。

所以他们之间的关系相当于:WNDCLASS是一个类,hWnd是这个对象。
一个窗口类可以有多个窗口实例,每个窗口实例有自己的window text。但他们的行为方式是相同的,即由窗口类的 wnd procedure 来定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++ DLL中添加窗口主要是通过调用Windows API来实现的。以下是一个简单的过程: 首先,我们需要在DLL代码中包含相应的头文件,如Windows.h,以便使用Windows API提供的函数和数据结构。 接下来,我们可以使用CreateWindow函数创建一个新的窗口。该函数需要提供窗口名、窗口标题、窗口样式、窗口位置和大小等参数。 例如,我们可以定义一个函数AddWindow来添加一个窗口: ```cpp #include <Windows.h> HWND AddWindow(const char* windowTitle, int width, int height) { // 创建窗口 WNDCLASS wndClass = {}; wndClass.lpfnWndProc = DefWindowProc; wndClass.hInstance = GetModuleHandle(NULL); wndClass.lpszClassName = "MyWindowClass"; RegisterClass(&wndClass); // 创建窗口 HWND hWnd = CreateWindow("MyWindowClass", windowTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, GetModuleHandle(NULL), NULL); ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); return hWnd; } ``` 最后,我们可以在客户端应用程序中调用AddWindow函数来添加窗口。注意,需要先加载DLL并获取函数指针,然后才能调用该函数。 ```cpp #include <Windows.h> typedef HWND (*AddWindowFunc)(const char*, int, int); int main() { HMODULE hModule = LoadLibrary("MyDll.dll"); if (hModule) { AddWindowFunc addWindow = (AddWindowFunc)GetProcAddress(hModule, "AddWindow"); if (addWindow) { HWND hWnd = addWindow("My Window", 800, 600); // 在这里进行其他操作 } FreeLibrary(hModule); } return 0; } ``` 通过上述步骤,我们可以在C++ DLL中成功添加一个窗口,并在客户端应用程序中使用该函数来创建并显示窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值