0

我创建了一个新的空对话框来测试代码CMFCToolBar 上的一些注释 – 停靠大按钮和使用 MDIClientArea但我看到这一行产生false

bool b = m_FirstToolbar.LoadToolBarEx(IDR_MAINFRAME, tbi, TRUE);  

这是我项目的资源:

在此处输入图像描述 有什么问题,我应该在资源中添加什么?
请帮我。这是我今天就基于 MFC 对话框的应用程序上的工具栏提出的第三个问题。
在编写代码以将工具栏添加到基于对话框的 mfc 后,我在基于对话框的 mfc 应用程序上的工具栏没有显示
,对话框没有运行
,我在这个网站上阅读了很多问题,还研究了网络上的很多页面。最后,我开始使用CMFCToolBar类而不是CToolbar支持工具栏的 32 位 24x24 图标,但没有任何页面真正有帮助,而且我还没有看到对话框顶部的工具栏。
您能否帮我介绍一个链接、一个视频教程等,这些教程教在 Visual Studio 2010 中将支持 32 位图像图标的工具栏添加到基于对话框的 mfc 应用程序**
**我更喜欢从以下开始的教程从头开始,非常适合 MFC 的初学者和 aguru

谢谢。我很高兴在这里得到你的答案。

根据@Edward Clements 有用的指导编辑了我的问题部分,
这是我项目的 Resource.h 文件

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by InitialJobProject2.rc
//
#define IDM_ABOUTBOX                    0x0010
#define IDD_ABOUTBOX                    100
#define IDS_ABOUTBOX                    101
#define IDD_INITIALJOBPROJECT2_DIALOG   102
#define IDR_MAINFRAME                   128
#define IDB_BITMAP1                     130
#define IDR_TOOLBAR1                    132
#define IDI_ICON1                       135
#define IDC_NewBtnTbr                   135
#define IDC_ZoomInBtnTbr                136
#define IDC_ZoomOutBtnTbr               137
#define IDI_ICON2                       138
#define IDC_PanBtnTbr                   138
#define IDC_TXTDataFile                 1001
#define IDC_EDTDataPath                 1002
#define IDC_BTNBrowse                   1003
#define IDC_RICHEDTHeader               1005
#define IDC_OPENGL                      1009

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        139
#define _APS_NEXT_COMMAND_VALUE         32776
#define _APS_NEXT_CONTROL_VALUE         1010
#define _APS_NEXT_SYMED_VALUE           104
#endif
#endif  

不知道数字是怎么设置的?我应该如何计算分配给新 ID 的号码?,和和有什么
区别? 如果我将数字 1010 分配给新 ID,那么我应该在前面写什么? 还有一个问题是这个: _APS_NEXT_RESOURCE_VALUE_APS_NEXT_COMMAND_VALUE_APS_NEXT_CONTROL_VALUE_APS_NEXT_SYMED_VALUE
_APS_NEXT_CONTROL_VALUE

我已经使用MFC/C++ Helper Class for Window Resizing from codeproject将对话框控件锚定到它。此类使用控件的 ID。我已经从 codeguru 添加了一个 COpenGLControl 用于在 MFC 控件中设置 OpenGL,它的构造函数中不需要 ID,但由于它是从 CWnd 类派生的,它有一个函数setHelpID我可以这样添加IDM,IDB,IDD,IDR,IDS,IDI or IDC吗(我不知道哪个请帮助我如何在它们之间进行选择and then assign this ID through functionsetHelpID to the instance of the classCOpenglControl ? and then use this ID to hook the openGL window to the main window through classCWndResizer`?

问题解决
了我建议为opengl窗口设置ID的方式确实有效,除了你应该使用SetDlgCtrlID成员函数而不是SetHelpID

4

1 回答 1

1

我不熟悉将工具栏加载到对话框中,但是您需要创建一个带有 ID 的 Toolbar 资源(我不会使用IDR_MAINFRAME自己,因为它很混乱,您可能需要多个工具栏)并在LoadToolBarEx; 工具栏将包含具有自己的图像和 ID 的按钮。您将需要在消息映射中使用ON_COMMANDandON_UPDATE_COMMAND_UI来启用/禁用按钮并响应按钮点击。

此 MSDN 论坛帖子提到您的对话框需要来自CDialogEx而不是CDialog.

关于 MFC 功能包控件(如 CMFCToolbar)的清晰文档很少,这篇CodeProject 文章可能会有所帮助(即使它是关于移植遗留应用程序,它仍然有很多有用的注意事项)。

SO文章中的更多信息,这是关于动态创建工具栏(没有工具栏资源)。

于 2013-08-06T13:16:02.497 回答