最近要完成个任务。在一个对话框下建15-20个按钮(我准备动态生成),然后右键出现菜单可选择显示或者不显示某个按钮(叫它按钮定制不知道准不准确?),我不知道选了一个按钮之后,所有的按钮怎么重新排列位置(貌似用隐藏是行不通的),是用WM_COMPAREITEM和WM_DELETEITEM消息来实现吗? 然后我又想不显示某个按钮,再怎么排...大虾们, 怎么实现...
调试欢乐多
使用 ShowWindow隐藏按钮.
struct BTNINFO
{
CWnd* m_pWnd;
BOOL m_bIsShow;
};
让后用一个CArray存这个结构
创建按钮的时候把按钮的指针赋给m_pWnd
每次更新显示的时候就通过设置m_bIsShow的值
然后重排的话就从头遍历数组
m_bIsShow为真就显示
是假就隐藏
CRect rc1 = CList1.GetAt(0);//注意序号
pWnd->MoveWindow(rc1);
pWnd->ShowWindow(SW_SHOW); pWnd = CList2.GetAt(6);
CRect rc2 = CList1.GetAt(1);//注意序号
pWnd->MoveWindow(rc2);
pWnd->ShowWindow(SW_SHOW); ........
4楼的应该可以,不过需要加一个RECT,在结构体中能加吧应该? 我用
struct BTNINFO
{
CButtonST *m_pWnd;
BOOL m_bIsShow;
}; CArray <BTNINFO,BTNINFO&> MyArray;
然后 CButtonST *pButton = new CButtonST[11];
MyArray.SetSize(11); if (pButton[0].Create("", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(rect.left + 12, rect.top + 15, rect.left + 51, rect.top + 54), this, IDC_BTN_DOCUMENT))
MyArray[0].m_pWnd = &pButton[0];//这一句不对.. 我也知道不对,但是不知道怎么按你说的创建按钮的时候把按钮的指针赋给m_pWnd... 大虾们,我新手,帮帮忙,顺便给加个RECT, 最重要的RECT排序怎么弄..
vector<HWND> vec;来保存你动态创建button的HWND