Win32 开发记录

Typedefs

LPCSTR = char*
LPCWSTR = wchar_t*

Webpages

Control reference: https://docs.microsoft.com/en-us/windows/win32/controls/individual-control-info

Notes

  • ShowWindowExClassNameWin32 下面默认要求 LPCSTRDLL 开发下面默认要求 LPCWSTR,显然这样写出来的 DLL 是没法用的,在 Win32 应用的第一行加上 #define UNICODE
  • LRESULT CALLBACK (*)(HWND, UINT, WPARAM, LPARAM) 函数指针可以直接用 WNDPROC
  • 可以在 DLL 里用 GetModuleHandle(NULL) 获得一个 HINSTANCE 对象,在 DLL 里实现回调,这样与外部交互时除了 HWND 就没有什么 Win32 类型了。
  • Cl exited with return code 2: 切换成 Release 看报错。
  • DbgView 应该是弃用了,抓不到调试信息了。

Topics

按钮嵌套问题

此文章

文本框重绘问题

通过 MoveWindow 对文本框进行缩短一行高度(自行实现)的操作后,出现图示问题。此问题仅在嵌套于按钮中时出现。
Topic_2_Img_1


通过 ShowWindowSW_MAXIMIZE + SW_SHOW 组合

可行,造成闪烁问题,推测由于重绘区域过大。发 WM_SETREDRAW 暂时停用重绘并没有太大作用(注意这个消息会强制使接受的窗口变为可见,即加上 WS_VISIBLE 的 Style)。

计算脏区域

可见脏区域就是多出来的那一行高度,前后 GetWindowRect 并映射到窗口坐标重绘即可。


注意这里 RedrawWindow 所使用的句柄必须是通常意义上的窗口句柄,不知道为什么,也许窗口绘制实现更好(

posted @ 2020-02-28 14:34  酷暑一夏1  阅读(155)  评论(0)    收藏  举报