不知道于没有人注意过,在列表视图控件(例如资源管理器的文件视图)的 Report 模式下(即资源管理器的“详细信息”模式),如果同时按 Ctr 和小键盘上的加号键,则各列的宽度会根据内容的最大长度进行自动调整。
无 疑这个功能很实用,可是我找遍了 MSDN 却没有发现可以通过编程来做到,既没有消息,也没有函数。最开始想通过 PostMessage 发送键盘消息来模拟,实验以后发现总也达不到效果。后来,后来就有了以下这段代码。我是怎么弄出来的,不好意思,半年以前的代码了,实在是忘了,不过确实 好使,觉得有用的兄弟拿去将就着用吧。现在再想一下,估计调用 keybd_input() 或者 SendInput() 函数也可以实现。
1 2 3 4 5 6 7 8 9 10 11 12 |
void AdjustListViewColumns(HWND hwnd) { BYTE abyKeyState[256]; BYTE byPrevState; GetKeyboardState(abyKeyState); byPrevState = abyKeyState[VK_CONTROL]; abyKeyState[VK_CONTROL] |= 0x80; SetKeyboardState(abyKeyState); SendMessage(hwnd, WM_KEYDOWN, VK_ADD, 0); abyKeyState[VK_CONTROL] = byPrevState; SetKeyboardState(abyKeyState); } |