我需要一个用于c ++的项目的GUI

时间:2011-03-01 13:53:55

标签: c# c++ mfc

我需要一个包含以下内容的GUI系统: 一个树列表,每个列表链接到一个视图,当我点击一个项目打开视图 下一步 我想在每个视图中插入一些网格。

我看到一个名为的示例示例:dockpanelsuite http://sourceforge.net/projects/dockpanelsuite/ 有一个资源管理器和多文档 我想我可以根据我的要求改变它。 但是这是在C#中,我需要C ++中的东西。 如果MFC中的样本相同,或者我可以将它们组合起来? 性能和稳定性如何? 谢谢herzl

5 个答案:

答案 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;
}