vc6 控件 message map

来源:互联网 发布:dreamweaver cs6 mac 编辑:程序博客网 时间:2024/05/03 16:50

1. 头文件.h 关于afx_message 定义:

class CTest : public CDialog
{

public:

// Dialog Data
 //{{AFX_DATA(CTest)
 CTest(CWnd* pParent = NULL);   // standard constructor

     UINT m_time;  //④ 文本框 数字

     CString m_name; //④ 文本框 字符串

     CButton m_BtnDel;  //③列表框界面的按钮
     CComboBox m_ComboSpeed;   //②下拉菜单

     CListCtrl m_ListTest;//③列表框

     CDateTimeCtrl m_timeStart; //⑤时间插件

     CSliderCtrl m_SliderSpeed;  //⑥滑动条 速度

     CButtonBMP m_btnTop;  // 7图片按钮 

     CTabCtrl m_tabCfg;  //⑧tab窗口

// Overrides
     // ClassWizard generated virtual function overrides
     //{{AFX_VIRTUAL(CTest)
protected:
     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
     //}}AFX_VIRTUAL

protected:

     // Generated message map functions
     //{{AFX_MSG(CTest)

     virtual BOOL OnInitDialog();  //初始化函数
     virtual void OnOK();
     virtual void OnCancel();
     afx_msg void OnButtonStart();
     afx_msg void OnButtonStop();
     afx_msg void OnButtonOn();
     afx_msg void OnButtonOff();
    afx_msg void OnButtonCall();
    afx_msg void OnButtonSet();
    afx_msg void OnButtonClear();
    afx_msg void OnButtonSave();  //① 按钮

    afx_msg void OnSelchangeComboSpeed(); //②下拉菜单

    afx_msg void OnClickListTest(NMHDR* pNMHDR, LRESULT* pResult);  //③列表框

    afx_msg void OnReleasedcaptureSliderSpeed(NMHDR* pNMHDR, LRESULT* pResult); //⑥滑动条

    afx_msg void OnSelchangeTabRemotecfg(NMHDR* pNMHDR, LRESULT* pResult);    //⑧tab窗口
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()

};

2. 控件和消息关联xx.cpp文件:

CTest::CTest(CWnd* pParent /*=NULL*/)
 : CDialog(CTest::IDD, pParent)
{
 m_btnTop.LoadBitmaps(IDB_TOP, IDB_TOPUP, IDB_TOPDOWN);
 //{{AFX_DATA_INIT(CTest)


 //}}AFX_DATA_INIT


}

 

static CHAR *cSpeedList[] = {"Full Speed", "1/2 Speed", "1/4 Speed", "1/8 Speed", NULL};

void CTest::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CTest)
 DDX_Control(pDX, IDC_BUTTON_DEL, m_BtnDel);
 DDX_Control(pDX, IDC_LIST_TEST, m_ListTest); //③列表框  变量和控件相关联
 DDX_Control(pDX, IDC_COMBO_SPEED, m_ComboSpeed); //②下拉菜单 变量和控件相关联
 DDX_Text(pDX, IDC_EDIT_TIME, m_time); //④ 文本框  变量和控件相关联(DDV_MinMaxInt(pDX, m_time, 1, 255); DDV_MinMaxUInt(pDX, m_time, 0, 512);)

 DDX_Control(pDX, IDC_TIME_START, m_timeStart); //⑤时间插件

 DDX_Text(pDX, IDC_EDIT_NAME, m_name); //④ 文本框  变量和控件相关联
 DDV_MaxChars(pDX, m_name, 30);
 DDX_Control(pDX, IDC_BUTTON_UP, m_btnTop);   // 7图片按钮 

 DDX_Control(pDX, IDC_TAB_CFG, m_tabCfg);  //⑧tab窗口

 

 //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTest, CDialog)
 //{{AFX_MSG_MAP(CTest)
 ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
 ON_BN_CLICKED(IDC_BUTTON_ON, OnButtonOn)
 ON_BN_CLICKED(IDC_BUTTON_OFF, OnButtonOff)
 ON_BN_CLICKED(IDC_BUTTON_CALL, OnButtonCall)
 ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)
 ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
 ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)  //① 按钮

 ON_CBN_SELCHANGE(IDC_COMBO_SPEED, OnSelchangeComboSpeed) //②下拉菜单

 ON_NOTIFY(NM_CLICK, IDC_LIST_TEST, OnClickListTest) //③列表框

 ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_SPEED, OnReleasedcaptureSliderSpeed) //⑥滑动条

 ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CFG, OnSelchangeTabcfg)   //⑧tab窗口

 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

3. 消息实现xx.cpp文件:

 

void CTest::OnButtonSave()  //① 按钮
{
   // TODO: Add your control notification handler code here

   // UpdateData(TRUE);或UpdateData(FALSE};

....

}

void CTest::OnSelchangeComboSpeed()   //②下拉菜单
{
   // TODO: Add your control notification handler code here
   m_speed = m_ComboSpeed.GetCurSel();
    //将修改的值同步到窗体显示
    this->UpdateData(FALSE);
}

void CTest::OnClickListTest(NMHDR* pNMHDR, LRESULT* pResult)  //③列表框
{
 // TODO: Add your control notification handler code here
 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
 int nItem = pNMListView->iItem;
 m_Index = nItem;
 //设置控件是否可见
 if(-1 == nItem)
 {
  this->m_BtnDel.EnableWindow(FALSE);
  return ;
 }
 this->m_BtnDel.EnableWindow(TRUE);

 *pResult = 0;
}

BOOL CTest::OnInitDialog()
{
    CDialog::OnInitDialog();
 
     ::GSetItemFont(this); //统一字体
     // TODO: Add extra initialization here

     int i;
    char acBuf[32];
    m_ComboSpeed.ResetContent();
     for(i = 0; cSpeedList[i] != NULL; i++)
    {
        sprintf(acBuf,"%s", GetTxt(cSpeedList[i]));
        m_ComboSpeed.AddString(acBuf);
    }

    SYSTEMTIME stTime;
     this->m_timeStart.GetTime(&stTime);  //⑤时间插件
     stTime.wHour = schStart[0].hour;
     stTime.wMinute = schStart[0].minute;
     this->m_timeStart.SetTime(&stTime);

    this->m_timeStart.SetFormat("HH:mm");

    m_btnTop.OnSetMSG(TRUE);   //7 图片按钮

    i=1;

    this->m_tabCfg.InsertItem(i++, ::GetTxt("NewTab"));

   

    CRect rtDlg;
    CRect rtTab;
    RECT rect;
    this->m_tabCfg.GetClientRect(&rtDlg);      //⑧设置tab窗口大小位置,创建窗口
    this->m_tabCfg.GetItemRect(0, &rtTab);

    rect.left    = rtDlg.left+2;
    rect.right   = rtDlg.right-4;
    rect.top     = rtDlg.top+rtTab.Height()+4;
    rect.bottom  = rtDlg.bottom-8;

    m_dlgNewTab.Create(IDD_TAB, &m_tabCfg);
    m_dlgNewTab.MoveWindow(&rect, FALSE);

 

}

void CTest::OnReleasedcaptureSliderSpeed(NMHDR* pNMHDR, LRESULT* pResult)  //⑥滑动条
{
 // TODO: Add your control notification handler code here
 
// m_StcSpeed.Format("%d", m_SliderSpeed.GetPos());
// UpdateData(FALSE);
 *pResult = 0;
}

void CTest::OnSelchangeTabcfg(NMHDR* pNMHDR, LRESULT* pResult)  //⑧tab窗口
 {
 // TODO: Add your control notification handler code here
 m_OthersShowWindow(SW_HIDE);
 

 switch(this->m_tabCfg.GetCurSel())
 {
 case 0:
  m_dlg0.ShowWindow(SW_SHOW);
  break;
 case 1:
  m_dlg1.ShowWindow(SW_SHOW);
  break;
 case 2:
  m_dlg2.ShowWindow(SW_SHOW);
  break;
  default:
  break;
 }
 *pResult = 0;
}

 

0 0