求助:VC如何实现类似QQ界面左侧的一竖列按钮的界面 利用VC的SDI开发一个程序,想在最左侧从上到下放一列图标,每点一个图标则出现一个界面显示相关内容,就是类似QQ界面上:“QQ好友管理面板”,“拍拍网用户管理面板”,“用户自定义面板”这几个按钮实现的功能。谁有类似的代码啊,不胜感激。现在网站传不了图片,要是能传张图片就一目了然了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 点击不同的图标,显示不同的view,多个view ChangeView(UINT nCmdID) { CView* pViewAdd; CView* pViewRemove; if(m_PMain ==NULL) m_PMain =GetActiveView(); CDocument* pDoc = GetActiveDocument(); if((nCmdID == IDD_STOREGOODS_FORM) && (m_currentView == 1)) return 0; if((nCmdID == IDD_FORMVIEW_SYSSET) && (m_currentView == 2)) return 0; if (nCmdID == IDD_FORMVIEW_SYSSET) { m_pView1 = GetActiveView(); if (m_pView2 == NULL) { m_pView2 = (CView*)new CSysSetView; m_pView2- >Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL); } pViewAdd = m_pView2; pViewRemove = m_pView1; m_currentView= 2; } else { m_pView1 = GetActiveView(); pViewAdd = m_PMain; pViewRemove = m_pView1; m_currentView= 1; } // 将活动视的child id设置为AFX_IDW_PANE_FIRST // 将其它视设置为AFX_IDW_PANE_FIRST以外的值, // 这样当调用 CFrameWnd::RecalcLayout重新布局窗口时, // 才会得到正确的视 int nSwitchChildID = pViewAdd- >GetDlgCtrlID(); pViewAdd- >SetDlgCtrlID(AFX_IDW_PANE_FIRST); pViewRemove- >SetDlgCtrlID(nSwitchChildID); // 显示活动视而隐藏非活动视 pViewAdd- >ShowWindow(SW_SHOW); pViewRemove- >ShowWindow(SW_HIDE); // 将新的活动视连接到文档,并断开原来的视与文档的连接 pDoc- >AddView(pViewAdd); pDoc- >RemoveView(pViewRemove); SetActiveView(pViewAdd); RecalcLayout(); http://www.vckbase.com/code/viewcode.asp?id=3144VC模仿超炫QQ界面的实现 < 高级用户界面 >记得给分就行了....呵呵~多多益善... 那建议看看MSDN2008,用 VS2008提供的 CMFC类...这是微软 唯一照顾我们C++程序员的...VS2008新建工程时,有几种形式,像OFFICE.. 都是基于CMFC 动态创建一些按钮,每个关联一个无边框的Dialog。点其中一个按钮就把对应的Dialog移动到指定点,然后ShowWindow(SW_SHOW),再把上次显示的Dialog SW_HIDE就像CTabCtrl那样。 有个想法,重载CTabCtrl类,把标签移到竖直方向上 老师给我指了条路:用BCGContorlBar做 去www.codetools.com下载一个OutLookBar的控件,或者去google用OutLookBar搜索 数据结构怎么学比较好? 字体加载问题 一个CTypedPtrArray如何删除其中某些满足一定条件的元素 使用 OLE DB 访问 Access 2000 数据库时出现的简单问题,重分赐教。 类型???(在线等) ATL与VB的问题,在线急等 VC中怎么把按键的ASCII值转换成字符阿? XML的声明<?xml version="1.0" encoding="UTF-8" ?> 服务程序读注册表出错,高分相送! 怎么跟踪到线程内部? psapi.h的问题 CListCtrl如何控制图片显示的位置
{
CView* pViewAdd;
CView* pViewRemove;
if(m_PMain ==NULL)
m_PMain =GetActiveView();
CDocument* pDoc = GetActiveDocument(); if((nCmdID == IDD_STOREGOODS_FORM) && (m_currentView == 1))
return 0; if((nCmdID == IDD_FORMVIEW_SYSSET) && (m_currentView == 2))
return 0; if (nCmdID == IDD_FORMVIEW_SYSSET)
{
m_pView1 = GetActiveView();
if (m_pView2 == NULL)
{
m_pView2 = (CView*)new CSysSetView;
m_pView2- >Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL);
} pViewAdd = m_pView2;
pViewRemove = m_pView1;
m_currentView= 2; }
else
{
m_pView1 = GetActiveView();
pViewAdd = m_PMain;
pViewRemove = m_pView1;
m_currentView= 1;
} // 将活动视的child id设置为AFX_IDW_PANE_FIRST // 将其它视设置为AFX_IDW_PANE_FIRST以外的值, // 这样当调用 CFrameWnd::RecalcLayout重新布局窗口时, // 才会得到正确的视 int nSwitchChildID = pViewAdd- >GetDlgCtrlID(); pViewAdd- >SetDlgCtrlID(AFX_IDW_PANE_FIRST); pViewRemove- >SetDlgCtrlID(nSwitchChildID); // 显示活动视而隐藏非活动视 pViewAdd- >ShowWindow(SW_SHOW); pViewRemove- >ShowWindow(SW_HIDE); // 将新的活动视连接到文档,并断开原来的视与文档的连接 pDoc- >AddView(pViewAdd); pDoc- >RemoveView(pViewRemove); SetActiveView(pViewAdd); RecalcLayout();
记得给分就行了....呵呵~多多益善...
就像CTabCtrl那样。