如何得到一个对话框窗口的句柄?

liushan 2002-05-14 11:20:28
谢谢
...全文
640 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Anaki 2002-05-16
对了,你确定可以在模式对话框的 OnInitDialog 函数中 MoveWindow 成功吗?奇怪了,呵呵...
回复
Anaki 2002-05-15
如果你的代码像这样:
void CxxView::OnXXX(...) // 某个消息响应
{
CDibDlg dlg;
dlg.domodal();

...
dlg.moveWindow(rect); // moveWindow 为自定义函数,其中调用 CDialog 的 MoveWindow, 参数 rect 指明位置
...
}

是无法达到你要的目的的, 因为在模式对话框结束之前, 即 dlg.domodal() 语句执行完之前,是不会执行它后面的语句的.

如果代码类似这样:
...
CDibDlg dlg;
dlg.moveWindow(rect); // moveWindow 为自定义函数,其中调用 CDialog 的 MoveWindow, 参数 rect 指明位置
dlg.domodal();
...
我估计会报错,因为CDialog 的 MoveWindow需要使用到窗口句柄,而在dlg.domodal()之前dlg的窗口句柄是无效的

解决方法之一是
CDibDlg dlg;
dlg.m_rcInit = rect; // m_rcInit是保存初始化位置的CRect或者RECT
然后在 OnInitDialog 中 CDialog::OnInitDialog 语句之后调用MoveWindow(...)
回复
liushan 2002-05-14
Anaki(九天) 兄弟

你这样做效果跟在oninitdialog()中调用movewindow()差不多

但我想要在视图类的一个消息函数中来显示对话框.类似代码是:CDibDlg dlg;

dlg.domodal() ,现在我将视图的类成员变量rect传给dlg.movewindow(..)

movewindow()是我自己加的,其内调用的是MoveWindow()

关注
回复
Anaki 2002-05-14
模式对话框会在CreateDialogIndirect最后调用CenterWindow. CenterWindow的最后一行会以 -1,-1 作为宽高参数调用 SetWindowPos ,所以解决方法之一就是响应 WM_WINDOWPOSCHANGING 消息:
void CAppDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if (lpwndpos->cx = -1)
if (lpwndpos->cy = -1) // 正在初始化
{
lpwndpos->x = 0; // 改变到你想要得坐标
lpwndpos->y = 0;
// 或者大小
lpwndpos->cx = 100;
lpwndpos->cy = 100;
}
CDialog::OnWindowPosChanging(lpwndpos);
}

Enjoy!
回复
liaocao 2002-05-14
在对话框消息处理中的WM_INITDIALOG里面调用
回复
Anaki 2002-05-14
你也可以使用FindWindow(Ex)或者 EnumWindows来查找窗口句柄.
普通 Dialog 的窗口类为 "#32770 (Dialog)"

EnumWindow 用起来稍微复杂,但很灵活,当调用 EnumWindow 时,操作系统枚举系统中所有的窗口,对每一个窗口都会调用以参数传入的回调函数,并将当前窗口的句柄作为回调函数的一个参数传入,你可以在回调函数中判断是否是你要找的窗口和将其句柄保存下来,回调函数返回 TRUE 时继续枚举, 返回 FALSE 停止枚举...

以上的API都可以在 MSDN 中找到详细说明.
回复
liushan 2002-05-14
兄弟们,其实我的问题是这样的:

点击某按钮,显示一对话框,并使得对话框按预先设定好的尺寸来显示.

应如何来用MoveWindow()

一定给分 谢谢
回复
Anaki 2002-05-14
如果你用MFC, CWnd的m_hWnd成员变量指明了CWnd对象对应的窗口句柄
回复
Anaki 2002-05-14
::GetWindow()
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-14 11:20
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……