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

发布于 2024-10-19 18:09:04 字数 344 浏览 2 评论 0原文

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

我看到一个名为 :dockpanelsuite http://sourceforge.net/projects/dockpanelsuite/ 的演示示例 有一个资源管理器和多文档 我认为我可以将其更改为我的要求。 但这是 C# 语言,我需要 C++ 语言。 如果 MFC 中有相同的示例,或者我可以将它们组合起来吗? 性能和稳定性怎么样? 谢谢赫茨尔

I need a GUI system that contain:
a tree list that each item of list linked to a view and when I click on a Item open the view
for next step
I want to insert to each view some grids.

I see a demo example named :dockpanelsuite http://sourceforge.net/projects/dockpanelsuite/
there is a explorer and multi document
I think that I can change it to my requirment.
but this is in C# and I need something in C++.
if is same sample in MFC ,or I can combine them?
what about performace and stability?
thanks herzl

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

筱武穆 2024-10-26 18:09:04

使用QT。它很全面,在网上有很多教程,是可移植的,并且是用 C++ 编写的。

use QT. It's comprehensive, has a lot of tutorials in the web out there, is portable and is in C++.

北音执念 2024-10-26 18:09:04

Qt 优于 MFC 的原因有很多,包括

: > 1.它是开源的

2.跨平台。它适用于 Linux、某些移动设备和
苹果
操作系统。这使得移植更容易
程序到其他平台。

> 3.Qt is much easier to use and learn that MFC.

> 4.Above all Qt is well documented.

Qt is better than MFC for a number of reasons including:

. > 1.It is open source

2.It is cross platform. It works on Linux, some mobile devices and
Mac
OSX. This makes it easier to port
programs to other platforms.

> 3.Qt is much easier to use and learn that MFC.

> 4.Above all Qt is well documented.
櫻之舞 2024-10-26 18:09:04

MFC 库太大了。如果您只想要简单的 GUI,请选择 win32

MFC is too big library. Go for win32 if you only want simple GUI

过潦 2024-10-26 18:09:04

Win32++ 也是一个很好的小库,仅用于 Windows 开发。

Win32++ as also a nice little library for windows only development.

桜花祭 2024-10-26 18:09:04

您可以开始在应用程序向导中创建新的 MFC SDI 应用程序,选择 Visual Studio 项目样式,您将需要使用文档/视图体系结构。

使用生成的应用程序,您可以在左侧停靠窗格中使用从 CMFCListCtrl 派生的 ListControl 类。

class CMyListCtrl : public CMFCListCtrl
{
    // Your stuff  goes here....
   public:
    DECLARE_MESSAGE_MAP()
    afx_msg void OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult);
}

在实现文件中,您可以使用类似这样的方法来处理单击事件。

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

You could start creating a new MFC SDI App in the App Wizard pick the Visual Studio Project Style, you will need to use the Document/View architecture.

With the generated App you could work you way to have in the left docking pane a derived ListControl class from CMFCListCtrl.

class CMyListCtrl : public CMFCListCtrl
{
    // Your stuff  goes here....
   public:
    DECLARE_MESSAGE_MAP()
    afx_msg void OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult);
}

in the implementation file you could handle the click event with something like this..

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文