一、基于对话框的应用程序,不知怎样添加工具栏,我按添加菜单的方法不行!!!
二,在对话框上创建二个Check box 控件时运行没有问题但当我为他们添加两个BOOL型成员变量(编译和Build都没有错误),BuildExecute(Ctrl + F5)时就出错!(内存不能Written!请高手指点!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    一Alon
    //在对话框中加入工具栏
    1.先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮2.在对话框类声名中添加成员变量 CToolBar m_wndtoolbar;3.在对话框类的OnInitDialog() 中添加如下代码//添加一个平面工具条
    if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT ,  WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
        CRect(4,4,0,0)) ||    !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )
    {
        TRACE0("failed to create toolbar\n");
        return FALSE;
    }
    m_wndtoolbar.ShowWindow(SW_SHOW);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);  技巧:
    在菜单和工具栏之间显示一条分割线,方法如下:
    加入一个Picture控件,在属性中将Style中的"下沉"选中ToolTip的添加
    1.在对话框类定义中手工添加消息映射函数的定义,如下:
        //{{AFX_MSG(CDlgMenuToolbarDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);  //此句位添加的
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()2.在对话框的.cpp中添加函数的实现代码
    BOOL CTestdlgDlg::OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult)
    {
    ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);// UNICODE消息
    TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
    TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
    //TCHAR szFullText[512];
    CString strTipText;
    UINT nID = pNMHDR->idFrom;if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
    pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
    {
    // idFrom为工具条的HWND 
    nID = ::GetDlgCtrlID((HWND)nID);
    }if (nID != 0) //不为分隔符
    {
    strTipText.LoadString(nID);
    strTipText=strTipText.Mid(strTipText.Find("\n",0)+1);
    #ifndef _UNICODE
    if (pNMHDR->code == TTN_NEEDTEXTA)
    {
    lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
    }
    else
    {
    _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
    }
    #else
    if (pNMHDR->code == TTN_NEEDTEXTA)
    {
    _wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
    }
    else
    {
    lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
    }
    #endif*pResult = 0;// 使工具条提示窗口在最上面
    ::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
    SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); 
    return TRUE;
    }
    return TRUE;}3.在对话框的.cpp中添加消息映射BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog)
    //{{AFX_MSG_MAP(CDlgMenuToolbarDlg)
    ON_WM_PAINT()
    ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )  //此句为添加
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()二
    //Check Box使用
    1.建立一个基于对话框的应用程序,并添加一个Check Box控件2.用ClassWizard给控件添加成员变量:
    public:
        BOOL    m_check;3.给控件添加BN_CLICKED事件,并在其中添加代码:
        UpdateData(true);
        if(m_check==TRUE)
        {
        MessageBox("HELLO");
        }
        else
        {
            MessageBox("Good Night");
        }
    第二个问题有可能是你对控件多次添加删除引起的,在删除控件时,vc有些和控件
    对应的东西好像删的不干净,每次我都是自己打开资源文件看还有没有没删掉的东西
    ,还要查找有无对应的变量等等..