我需要一个包含以下内容的GUI系统: 一个树列表,每个列表链接到一个视图,当我点击一个项目打开视图 下一步 我想在每个视图中插入一些网格。
我看到一个名为的示例示例:dockpanelsuite http://sourceforge.net/projects/dockpanelsuite/ 有一个资源管理器和多文档 我想我可以根据我的要求改变它。 但是这是在C#中,我需要C ++中的东西。 如果MFC中的样本相同,或者我可以将它们组合起来? 性能和稳定性如何? 谢谢herzl
答案 0 :(得分:8)
使用QT。它非常全面,在网上有很多教程,可移植,并且是用C ++编写的。
答案 1 :(得分:1)
由于多种原因,Qt优于MFC,包括:
。 > 1.它是开源的
2.它是跨平台的。它适用于Linux,一些移动设备和 苹果电脑 OSX。这使得端口更容易 程序到其他平台。
> 3.Qt is much easier to use and learn that MFC.
> 4.Above all Qt is well documented.
答案 2 :(得分:0)
MFC是一个太大的库。如果您只想要简单的GUI
,请转到win32答案 3 :(得分:0)
Win32 ++也是一个很好的小型库,仅用于Windows开发。
答案 4 :(得分:0)
您可以在应用向导中选择Visual Studio项目样式开始创建新的MFC SDI应用程序,您需要使用文档/视图架构。
使用生成的应用程序,您可以在左侧停靠窗格中使用CMFCListCtrl中的派生ListControl类。
class CMyListCtrl : public CMFCListCtrl
{
// Your stuff goes here....
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult);
}
在实现文件中,你可以使用类似的东西处理click事件。
BEGIN_MESSAGE_MAP(CMyListCtrl, CMFCListCtrl)
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CMyListCtrl::OnLvnItemchanged)
END_MESSAGE_MAP()
void CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
POSITION p = GetFirstSelectedItemPosition();
int nSelected = GetNextSelectedItem(p);
if (nSelected != -1)
{
CString strText = GetItemText(nSelected, 0);
// we open the document.....
CMainFrame *pFrame = static_cast<CMainFrame *> (AfxGetMainWnd());
CWinApp *app = AfxGetApp();
app->OpenDocumentFile(strText,FALSE);
pFrame->ShowJobsProperties ();
}
*pResult = 0;
}