MFC SetClassLongA参数详解
时间: 2023-07-05 21:20:47 浏览: 155
`SetClassLongA`函数的参数如下:
```c++
LONG SetClassLongA(
HWND hWnd, // 窗口句柄
int nIndex, // 属性索引
LONG dwNewLong // 新属性值
);
```
参数说明:
- `hWnd`:指定窗口句柄。
- `nIndex`:指定要设置的属性索引。可以是以下值之一:
- `GCL_MENUNAME`:设置窗口类的菜单名称。
- `GCL_STYLE`:设置窗口类的样式。
- `GCL_WNDPROC`:设置窗口类的窗口过程。
- `GCL_HICON`:设置窗口类的大图标句柄。
- `GCL_HICONSM`:设置窗口类的小图标句柄。
- `GCL_CBCLSEXTRA`:设置窗口类的额外类字节数。
- `GCL_CBWNDEXTRA`:设置窗口类的额外窗口字节数。
- `GCL_HCURSOR`:设置窗口类的光标句柄。
- `GCL_HBRBACKGROUND`:设置窗口类的背景画刷句柄。
- `dwNewLong`:指定新的属性值。
注意:
- 在使用`SetClassLongA`函数之前,需要确保指定的窗口类已经注册。
- 如果在使用`SetClassLongA`函数之前,使用了`AfxRegisterWndClass`或`RegisterClass`函数注册窗口类,则需要使用相应的函数获取窗口类的原始值,然后将修改后的值与它们合并。例如:
```c++
LONG dwStyle = ::GetClassLongA(m_hWnd, GCL_STYLE);
::SetClassLongA(m_hWnd, GCL_STYLE, dwStyle | CS_DROPSHADOW);
```
上述代码将向窗口类的样式中添加`CS_DROPSHADOW`位,而不是替换它们。
- 在使用`SetClassLongA`函数之后,需要使用`SetWindowPos`函数通知系统更新窗口样式。例如:
```c++
::SetClassLongA(m_hWnd, GCL_STYLE, dwStyle | WS_BORDER);
::SetWindowPos(m_hWnd, NULL, 0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
```
阅读全文