0

ダイアログにツールバーを作成するために使用したコードは次のとおりです。チュートリアルの初期段階で、これらのコードをプログラムに追加しました。

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
}  

ツールバーを追加するには、この部分を追加します。

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

コードを実行するこの段階では、エラーはありませんが、ダイアログ ウィンドウは表示されません。ダイアログにリッチ エディット ボックスを追加したときに同様の問題が発生しましたが、Web でツールバー ケースを検索しても結果がありませんでした。
何が問題で、どうすればよいか教えていただけますか?

4

1 に答える 1

0

MSDN の DLGCBR32 サンプルは、ツールバーを MFC ダイアログに追加する方法を示しています。

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

于 2013-08-06T12:47:34.357 に答える