大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说句柄类(句柄名称是什么意思),希望您对编程的造诣更进一步.
资源ID(如文本框控件ID:IDC_textbox)、句柄(如窗口句柄HWND)、对象指针(如编辑框类指针CEdit* edit1)的概念、使用场景和相互转换:
资源的数据保存到内存后,需要通过一个物理地址或虚拟地址被访问到,这个地址的外在表现形式可以是ID、对象指针、或作为特殊结构体指针的句柄。
例1:
void Sys::OnButton48()
{
CString str;
str = "控件句柄与指针:\n";
str += "1 pWnd->GetSafeHwnd();\n";
CWnd * pWnd = GetDlgItem(IDC_textbox);
if (pWnd)
{
HWND hWnd = pWnd->GetSafeHwnd();
rdc4.Attach(hWnd); //CRichEditCtrl rdc4;
rdc4.SetWindowText(str);
}
rdc4.Detach();
str+="2 CWnd *p = CWnd::FromHandle(hWnd2);\n";
HWND hWnd2=::GetDlgItem(m_hWnd, IDC_textbox);
CWnd *p = CWnd::FromHandle(hWnd2);
p->SetWindowText(str);
}
上述按钮单击事件在富编辑框中输入:
控件句柄与指针: 1 pWnd->GetSafeHwnd(); 2 CWnd *p = CWnd::FromHandle(hWnd2);
例2:
void Sys::OnButton47Attach()
{
CString str;
str = "通过函数建立控件窗口和变量的关联:\n";
str += "1 rdc1.SubclassDlgItem(IDC_textbox,this);\n";
rdc1.SubclassDlgItem(IDC_textbox,this); //CRichEditCtrl rdc1;
rdc1.SetWindowText(str);
rdc1.UnsubclassWindow();
str += "2 rdc2.SubclassWimdow(hrdc);\n";
HWND hrdc;
GetDlgItem(IDC_textbox,&hrdc);
rdc2.SubclassWindow(hrdc);
rdc2.SetWindowText(str);
rdc2.UnsubclassWindow();
str += "3 rdc2.Attach(hrdc);\n";
HWND hrdc2;
GetDlgItem(IDC_textbox,&hrdc2);
rdc3.Attach(hrdc);
rdc3.SetWindowText(str);
rdc3.Detach();
}
上述按钮单击事件在富编辑框中输入:
通过函数建立控件窗口和变量的关联: 1 rdc1.SubclassDlgItem(IDC_textbox,this); 2 rdc2.SubclassWimdow(hrdc); 3 rdc2.Attach(hrdc);
-End-
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/29861.html