我做了一个界面想添加工具栏 但是填完之后程序没错误 就是点运行之后没有反应 
如果重新建一个工程 添加工具栏的话 就没有这种问题 
所以我重做了一个 很浪费时间 
但是添加完之后我想给按钮添加响应函数 程序没错误 就是不能运行 
如果还是重建一个工程直接添加工具栏 再添加响应函数就能运行 
所以我觉得不是程序代码的问题 但是真的不知道是怎么回事 因为东西太多 实在不想重做了 哪位大侠明白的帮帮忙

解决方案 »

  1.   

    BEGIN_MESSAGE_MAP(CLianchangDlg, CDialog)
    //{{AFX_MSG_MAP(CLianchangDlg)
    ON_COMMAND(ID_catalysis_DIALOG, Oncatalysis_DIALOG)
    ON_COMMAND(ID_crude_process, Oncrude_process)
    ON_COMMAND(ID_coking, Oncoking)
    ON_COMMAND(IDD_MYTAB_DIALOG, OnMyTab)
    ON_COMMAND(ID_crude_sell_plan, Oncrude_sell_plan)
    ON_COMMAND(ID_device_DIALOG, Ondevice_DIALOG)
    ON_COMMAND(ID_distillation, Ondistillation)
    ON_COMMAND(ID_importoil, Onimportoil)
            ON_COMMAND(ID_jianjie, Onjianjie)
            ON_COMMAND(ID_log_DIALOG, Onlog_DIALOG)
    ON_COMMAND(IDD_month, Onmonth)
    ON_COMMAND(ID_month_produce_plan, Onmonth_produce_plan)
    ON_COMMAND(ID_oil_one, Onoil_one)
    ON_COMMAND(ID_oil_two, Onoil_two)
    ON_COMMAND(ID_oil_tank, Onoil_tank)
    ON_COMMAND(ID_others, Onothers)
    ON_COMMAND(ID_quarter_plan, Onquarter_plan)
    ON_COMMAND(ID_year_plan, Onyear_plan)
    ON_COMMAND(ID_year_produce_plan, Onyear_produce_plan)
    ON_COMMAND(ID_ABOUTBOX, OnABOUTBOX)
    ON_COMMAND(IDD_chart, Onchart)
    ON_COMMAND(IDD_youhua, Onyouhua)
    ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)
            ON_BN_CLICKED(1001, Onyear_plan)
    ON_BN_CLICKED(1002, Onquarter_plan)
    ON_BN_CLICKED(1003, Onmonth)
    ON_BN_CLICKED(1004, Ondistillation)
    ON_BN_CLICKED(1005, Oncatalysis_DIALOG)
    ON_BN_CLICKED(1006, Oncoking)
    ON_BN_CLICKED(1007, Oncrude_sell_plan)
    ON_BN_CLICKED(1008, Ondevice_DIALOG)
    ON_BN_CLICKED(1009, Onimportoil)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CLianchangDlg message handlersBOOL CLianchangDlg::OnInitDialog()
    {
    CDialog::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)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    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
       /* UINT array[5];
    for (int i = 0;i <5;i++)
    {
    array[i] = 100+i;
    }
    m_statusbar.Create(this); m_statusbar.SetIndicators(array,sizeof(array)/sizeof(UINT)); for (int n = 0; n<5;n++)
    {
    m_statusbar.SetPaneInfo(n,array[n],0,120);
    }
    m_statusbar.SetPaneInfo(4,array[4],0,800); m_statusbar.SetPaneText(0,"当前用户");
    m_statusbar.SetPaneText(1,"mrkj");
    m_statusbar.SetPaneText(2,"当前进度"); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); RECT m_rect;
    m_statusbar.GetItemRect(3,&m_rect);//获取第四个面板的区域

    m_progress.SetParent(&m_statusbar);//设置进度条的父窗口为状态栏
    m_progress.MoveWindow(&m_rect);//设置进度条显示的位置 m_progress.SetPos(60);*/
    //登录
       Cdenglu dlg;
    if(dlg.DoModal() != IDOK)
    {
    OnOK();
    }
        CLianchangDlg::OnMyToolBar();
    return TRUE;  // return TRUE  unless you set the focus to a control
    }
    BOOL CLianchangDlg::OnMyToolBar()
    {
     //工具栏
    m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
    m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON9)); UINT array[9];
    for (int i = 0;i<9;i++)
    {
    array[i]=i+1001;
    }
    m_toolbar.Create(this);
    m_toolbar.SetButtons(array,9);

    m_toolbar.SetButtonText(0,"年计划");
    m_toolbar.SetButtonText(1,"季度计划");
    m_toolbar.SetButtonText(2,"月计划");
    m_toolbar.SetButtonText(3,"蒸馏工艺图");
    m_toolbar.SetButtonText(4,"催化裂化");
    m_toolbar.SetButtonText(5,"焦化工艺图");
    m_toolbar.SetButtonText(6,"原油信息");
    m_toolbar.SetButtonText(7,"装置信息");
    m_toolbar.SetButtonText(8,"原油采购"); m_toolbar.GetToolBarCtrl().SetButtonWidth(10,20); m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist); m_toolbar.SetSizes(CSize(70,53),CSize(28,33)); m_toolbar.EnableToolTips(TRUE); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
    return true;
    }void CLianchangDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }// If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.void CLianchangDlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }}// The system calls this to obtain the cursor to display while the user drags
    //  the minimized window.
    HCURSOR CLianchangDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }void CLianchangDlg::Oncatalysis_DIALOG() 
    {
    CCatalysis catalysis;
      catalysis.DoModal();

    }
    void CLianchangDlg::Oncrude_process() 
    {
    Ccrudeprocess crude_process;
      crude_process.DoModal();

    }
    void CLianchangDlg::Oncoking() 
    {
    Ccoking coking;
      coking.DoModal();

    }
    void CLianchangDlg::OnMyTab() 
    {
    CMyTab MyTab;
      MyTab.DoModal();

    }
    void CLianchangDlg::Oncrude_sell_plan() 
    {
    Ccrudesell crude_sell_plan;
      crude_sell_plan.DoModal();

    }
    void CLianchangDlg::Ondevice_DIALOG() 
    {
    CDevice device_DIALOG;
      device_DIALOG.DoModal();

    }
    void CLianchangDlg::Ondistillation() 
    {
    Cdistillation distillation;
      distillation.DoModal();

    }
    void CLianchangDlg::Onimportoil() 
    {
    Cimportoil importoil;
      importoil.DoModal();

    }
    void CLianchangDlg::Onjianjie() 
    {
    Cjianjie jianjie;
      jianjie.DoModal();

    }
    void CLianchangDlg::Onlog_DIALOG() 
    {
    Clog log_DIALOG;
      log_DIALOG.DoModal();

    }
    void CLianchangDlg::Onmonth() 
    {
    month month;
        month.DoModal();

    }
    void CLianchangDlg::Onmonth_produce_plan() 
    {
    Cmonthplan month_produce_plan;
      month_produce_plan.DoModal();

    }
    void CLianchangDlg::Onoil_one() 
    {
    Coilone oil_one;
      oil_one.DoModal();

    }
    void CLianchangDlg::Onoil_two() 
    {
    Coilplan oil_two;
      oil_two.DoModal();

    }
    void CLianchangDlg::Onoil_tank() 
    {
    Coiltank oil_tank;
      oil_tank.DoModal();

    }
    void CLianchangDlg::Onothers() 
    {
    Cothers others;
      others.DoModal();

    }
    void CLianchangDlg::Onyear_plan() 
    {
    Cyearplan year_plan;
      year_plan.DoModal();

    }
    void CLianchangDlg::Onquarter_plan() 
    {
    Cquaterplan quarter_plan;
      quarter_plan.DoModal();

    }
    void CLianchangDlg::Onyear_produce_plan() 
    {
    Cyearproduceplan year_produce_plan;
      year_produce_plan.DoModal();

    }
    void CLianchangDlg::OnABOUTBOX() 
    {
    CAboutDlg ABOUTBOX;
      ABOUTBOX.DoModal();

    }
    void CLianchangDlg::Onchart() 
    {
    chart Chart;
      Chart.DoModal();

    }
    void CLianchangDlg::Onyouhua() 
    {
    youhua youhua;
      youhua.DoModal();

    }
    BOOL CLianchangDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
    {
       TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
        UINT nID =pNMHDR->idFrom;
        if(nID)
        {
    nID = m_toolbar.CommandToIndex(nID);
    if (nID != -1)
    {
    m_toolbar.GetButtonText(nID,str);//获取工具栏文本
    pTTT->lpszText = str.GetBuffer(str.GetLength()); //设置提示信息文本
    pTTT->hinst = AfxGetResourceHandle();
    return(TRUE);
    }
         }
         return(false);
    }
    添加完红色的地方就出现问题
      

  2.   

    如果程序代码没问题,确定是程序bug的话,最好的解决办法是:1,进资源文件下的 你的工程名.rc 手动删除关于该控件的所有东西
    2,去Resource.h中手动删除所有该控件的痕迹
    3,清理解决方案(删除Debug下的东西)
    4,最后删除 你的程序.ncb然后打开工程,添加你需要的控件和相应函数。重新运行,如果还出现你所说的问题的话,那100%是你的代码有错误,仔细检查代码吧!