在编写将工具栏添加到基于对话框的MFC的代码后,该对话框无法运行 [英] after writing the code to add a toolbar to a dialog-based mfc the dialog doesn't run

查看:112
本文介绍了在编写将工具栏添加到基于对话框的MFC的代码后,该对话框无法运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是代码我曾经在对话框中创建工具栏,而在本教程的早期阶段,我只是将以下代码添加到了程序中:

here's the code that I have used to create a toolbar on my dialog and I am in the early stages of the tutorial just added these codes to my program:

InitialJobProject2Dlg.h

CToolBar m_FirstToolBar;  

InitialJobProject2.cpp

BOOL CInitialJobProject2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
    BOOL bNameValid;
    CString strAboutMenu;
    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    ASSERT(bNameValid);
    if (!strAboutMenu.IsEmpty())
    {
        pSysMenu->AppendMenu(MF_SEPARATOR);
        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
}

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);         // Set big icon
SetIcon(m_hIcon, FALSE);        // Set small icon

// TODO: Add extra initialization here
GDALAllRegister();

bool bAnchored = false;
bAnchored = m_resizer.Hook(this);
assert(bAnchored);
bAnchored = m_resizer.SetAnchor(IDC_TXTDataFile,ANCHOR_LEFT | ANCHOR_TOP);
assert(bAnchored);
bAnchored = m_resizer.SetAnchor(IDC_EDTDataPath,ANCHOR_LEFT | ANCHOR_TOP);
assert(bAnchored);
bAnchored = m_resizer.SetAnchor(IDC_BTNBrowse,ANCHOR_LEFT | ANCHOR_TOP);
assert(bAnchored);
bAnchored = m_resizer.SetAnchor(IDC_RICHEDTHeader,ANCHOR_HORIZONTALLY);
assert(bAnchored);
bAnchored = m_resizer.SetAnchor(IDC_OPENGL,ANCHOR_ALL);
assert(bAnchored);
bAnchored = m_resizer.InvokeOnResized();
assert(bAnchored);

if(!m_FirstToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | 
    WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | 
    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
    !m_FirstToolBar.LoadToolBar(IDR_TOOLBAR1))
{
    EndDialog(IDCANCEL);
}

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);
m_FirstToolBar.MoveWindow( 50, 0,100, 100, 1 );

m_oglWindow = new COpenGLControl();

CRect rect;

// Get size and position of the picture control
GetDlgItem(IDC_OPENGL)->GetWindowRect(rect);

// Convert screen coordinates to client coordinates
ScreenToClient(rect);

// Create OpenGL Control window
m_oglWindow -> oglCreate(rect, this);

// Setup the OpenGL Window's timer to render
//m_oglWindow -> m_unpTimer = m_oglWindow -> SetTimer(1, 1, 0);

return TRUE;  // return TRUE  unless you set the focus to a control
}  

已添加此部分以添加工具栏:

that this part is added to add a toolbar:

    if(!m_FirstToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | 
        WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | 
        CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
        !m_FirstToolBar.LoadToolBar(IDR_TOOLBAR1))
    {
        EndDialog(IDCANCEL);
    }

    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);
    m_FirstToolBar.MoveWindow( 50, 0,100, 100, 1 );  

在此阶段,当我运行代码时,没有错误,但没有显示对话框窗口.我有向对话框中添加丰富的编辑框时出现类似的问题,但在网上搜索工具栏的情况没有结果!
您能帮我什么问题,我应该怎么办?

at this stage when I run the code, there's no error but the dialog window isn't shown. I had a similar problem when adding rich edit box to my dialog but searching the web for the toolbar case had no result!
Could you help me what's the problem and what should I do?

推荐答案

MSDN中的DLGCBR32示例显示了如何向MFC对话框添加工具栏:

The DLGCBR32 sample in MSDN shows how to add a toolbar to an MFC dialog:

http://msdn.microsoft.com /en-us/library/ccstww6w(v=VS.80).aspx

这篇关于在编写将工具栏添加到基于对话框的MFC的代码后,该对话框无法运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆