vc6 控件 message map

4 篇文章 0 订阅

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在VC ListControl控件中添加check box,你可以使用自定义绘制来实现。下面是一个简单的示例代码: 1. 首先,在资源编辑器中创建一个List Control控件。 2. 在对话框类的头文件中添加以下成员变量和消息映射: ```cpp // 头文件 class CMyDialog : public CDialogEx { // ... CListCtrl m_list; CImageList m_imageList; // ... afx_msg void OnLvnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() }; ``` 3. 在OnInitDialog()函数中添加以下代码: ```cpp // 初始化 List Control m_list.SubclassDlgItem(IDC_LIST, this); m_list.SetExtendedStyle(LVS_EX_CHECKBOXES); // 创建图像列表以容纳 checkbox 图标 m_imageList.Create(16, 16, ILC_MASK | ILC_COLOR, 1, 1); HICON hIcon = (HICON)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_CHECKBOX), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); m_imageList.Add(hIcon); m_list.SetImageList(&m_imageList, LVSIL_SMALL); ``` 4. 在消息映射中添加以下代码: ```cpp // 消息映射 BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx) // ... ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, &CMyDialog::OnLvnItemchangedList) END_MESSAGE_MAP() ``` 5. 实现OnLvnItemchangedList()函数: ```cpp void CMyDialog::OnLvnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = reinterpret_cast<NM_LISTVIEW*>(pNMHDR); // 确定是否选中了某个项目 if ((pNMListView->uChanged & LVIF_STATE) && (pNMListView->uNewState & LVIS_STATEIMAGEMASK)) { // 获取选中项目的索引 int nIndex = pNMListView->iItem; // 获取当前 checkbox 的状态 BOOL bChecked = m_list.GetCheck(nIndex); // 根据需要处理 checkbox 状态 if (bChecked) { // 处理选中状态 } else { // 处理未选中状态 } } *pResult = 0; } ``` 这样,你就可以在VC ListControl控件中添加check box,并通过OnLvnItemchangedList()函数处理选中状态的变化。记得将IDC_LIST替换为你实际使用的List Control控件的ID。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值