请教这个win32窗口过程函数中的这几行代码是干啥的
请问这个win32窗口过程函数中的这几行代码是干啥的?
好久没写windows api程序了。感觉很多东西都忘了。
今天看官方教程的例子,发现下面的代码
请问上面WM_CREATE消息对应的代码是在干什么呢?
------解决思路----------------------
创建窗口的时候可以指定用户数据, 一般指定一个指针即可. 翻看文档:
WM_CREATE,
lParam
A pointer to a CREATESTRUCT structure that contains information about the window being created.
反正提供这个可以获取CreateWindowsXXX提供的指针参数, 然后放入该窗口的用户数据区, 用时再取.
方便实现面向对象, 因为一般都会写一个窗口类。
还有就是这个代码好像对64位不友好, 主要是那个"PtrToUlong", 我现在都是直接用LONG_PTR()
好久没写windows api程序了。感觉很多东西都忘了。
今天看官方教程的例子,发现下面的代码
LRESULT CALLBACK DemoApp::WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT result = 0;
if (message == WM_CREATE)
{
LPCREATESTRUCT pcs = (LPCREATESTRUCT)lParam;
DemoApp *pDemoApp = (DemoApp *)pcs->lpCreateParams;
::SetWindowLongPtrW(
hwnd,
GWLP_USERDATA,
PtrToUlong(pDemoApp)
);
result = 1;
}
请问上面WM_CREATE消息对应的代码是在干什么呢?
------解决思路----------------------
创建窗口的时候可以指定用户数据, 一般指定一个指针即可. 翻看文档:
WM_CREATE,
lParam
A pointer to a CREATESTRUCT structure that contains information about the window being created.
反正提供这个可以获取CreateWindowsXXX提供的指针参数, 然后放入该窗口的用户数据区, 用时再取.
方便实现面向对象, 因为一般都会写一个窗口类。
还有就是这个代码好像对64位不友好, 主要是那个"PtrToUlong", 我现在都是直接用LONG_PTR()