和以往一样, MSDN ... 不过今天却遇到了点问题.
按理说Rebar也算是一个比较灵活的控件, 不过MSDN只给出了一个Sample ... 更让人郁闷的是这个Sample竟然是有错误的... 我汗... 汗了一个下午... 汗的我感冒都快好了...
它给出的示例代码叫"Creating a Rebar Control”功能很单一, 创建一个Rebar上面放了一个ToolBar一个Combobox
它使用下面这句话取到ToolBar按钮大小
DWORD dwBtnSize = SendMessage(hwndToolbar, TB_GETBUTTONSIZE, 0,0);
然后执行了以下操作.
rbBand.cyChild = LOWORD(dwBtnSize);
rbBand.cxMinChild = NUMBUTTONS * HIWORD(dwBtnSize);
rbBand.cyMinChild = LOWORD(dwBtnSize);
很显然, HIWORD和LOWORD用反了... 所以创出来的都是畸形..
这是一个问题, 另一个问题是:
如果你直接写一个WinMain, 然后运行这个示例代码. 你会发现执行
SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
的时候总是失败. 也没有LastError, 很是郁闷.
经过仅两个小时的仔细研究, 发现要定义Windows版本在0501以上才行.
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
最后来张截图, Rebar用在这里了

No comments:
Post a Comment