我在A对话框调用B对话框,并由A对话框向B对话框的日期控件传送日期数据并显示,我不知该怎样做,我查了很多资料,都说要获的B对话框的句柄由此的到其日期控件的指针,以此向日期控件发送消息,来显示日期
    int nYear,nMonth,nDay;
    CDateTimeCtrl* pTime = (CDateTimeCtrl *)GetDlgItem(IDC_DATETIMEPICKER1);
    sscanf(m_date,"%d-%d-%d",&nYear,&nMonth,&nDay);
    CTime time(nYear,nMonth,nDay,0,0,0);
    pTime->SetTime(&time);
但就是不成功,望大大解惑

解决方案 »

  1.   

    最简单的办法,如果你在A对话框中拥有B对话框类的指针,那么在B对话框中做一函数,该函数接收一参数是你想要的日期,在该函数中设置B对话框的日期并更新。在A对话框中调用这个函数就行了。
      

  2.   

    GetDlgItem是在哪里调用的?如果是在A里调用就需要通过对话框B的指针来调用。
      

  3.   

    CDateTimeCtrl* pTime = (CDateTimeCtrl *)m_pDlgB->GetDlgItem(IDC_DATETIMEPICKER1);
      

  4.   

    楼上的各位大大,能写点代码来说明吗,求你们了 IDC_DATETIMEPICKER1是B对话框上的日期控件的ID
      

  5.   

    在A、B窗体的CPP文件都加上:
    #define WM_UM_MESSAGE WM_USER+200在A对话框中:
      CTime CTime time(nYear,nMonth,nDay,0,0,0);  HWND whd;
      whd = FindWindow(NULL,"你的B窗体的标题");
      ::PostMessage(whd,WM_UM_MESSAGE,(WPARAM)time,0);在B对话框中:
      截获WM_UM_MESSAGE消息并把wparam转换为时间值。
    PreTranslateMessage(...)
    {
      if(msg->Message == WM_UM_MESSAGE)
      {
        CTime tm = (CTime)msg->wParam;
        tm.......
      }
    }
      

  6.   

    为CDateTimeCtrl添加一个成员变量
    .h
    ......
    COleDateTime m_tDay;
    ......
    .cpp
    void CDlgB::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDlgB) DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_tDay);
    //}}AFX_DATA_MAP
    }调用的时候
    int nYear,nMonth,nDay;
    sscanf(m_date,"%d-%d-%d",&nYear,&nMonth,&nDay);CDlgB dlg;
    dlg.m_tDay.SetDate(nYear,nMonth,nDay);
    dlg.DoModal();
      

  7.   

    如楼上所述,在A对话框调用B对话框之前把时间值赋给B中的控件,然后DoModal
      

  8.   

    要么在A中设立一个B的指针,B在显示A前把this赋给该指针,然后通过指针调用你要的数据
    最简单就如楼上说的:B在显示A前生成A的对象,再给A对象的日期控件赋值,最后再显示A