知道Dialog窗口句柄,如何获得该Dialog对应的资源ID?

无聊客 2006-06-28 05:01:11
有没有办法?谢谢先!
...全文
510 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamwjp 2006-06-29
  • 打赏
  • 举报
回复
http://blogs.msdn.com/oldnewthing/archive/2005/07/08/436815.aspx
gdsdyl 2006-06-29
  • 打赏
  • 举报
回复
CDialog::m_lpszTemplateName, 同意
会思考的草 2006-06-28
  • 打赏
  • 举报
回复
请看CDialog的构造函数:
CDialog::CDialog(UINT nIDTemplate, CWnd* pParentWnd)
{
AFX_ZERO_INIT_OBJECT(CWnd);

m_pParentWnd = pParentWnd;
m_lpszTemplateName = MAKEINTRESOURCE(nIDTemplate);//ID=>TemplateName
m_nIDHelp = nIDTemplate;
}
会思考的草 2006-06-28
  • 打赏
  • 举报
回复
CDialog::m_lpszTemplateName,从这个资源模板名称可以得到其ID。
xazl 2006-06-28
  • 打赏
  • 举报
回复
同意楼上的
int idx = (UINT)(UINT_PTR) this->m_lpszTemplateName;
CString str;
str.Format("%d",idx);
gao_ming77 2006-06-28
  • 打赏
  • 举报
回复
顺便说一下,popup风格的dialog通过GetWindowLong或者GetDlgCtrlID得到的ID都是0。
gao_ming77 2006-06-28
  • 打赏
  • 举报
回复
ID就保存在CDialog::m_lpszTemplateName中,可能是字符串或者资源ID。
如果是资源ID,转换通过(UINT)(UINT_PTR)m_lpszTemplateName即可。
但关键是这个变量是protected类型的,没法直接访问,即便你通过FromHandle得到CDialog的指针。可能你需要通过消息什么了,呵呵。
iamwjp 2006-06-28
  • 打赏
  • 举报
回复
好像不行啊,只有具有child的风格的才行
lixiaosan 2006-06-28
  • 打赏
  • 举报
回复
CWnd *pWnd = FromHandle(hwnd);
pWnd->GetDlgCtrlID
iamwjp 2006-06-28
  • 打赏
  • 举报
回复
GetWindowLong(HWND, GWL_ID);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧