知道一个窗口的ID,用什么函数得到它的句柄?

Isnis-fallen 2018-08-07 05:30:25
知道一个Formview窗口的ID,用什么函数得到它的句柄?

想实现在一个formview里 得到另一个formview的窗口句柄, 好向他发消息。 ID已知, 有办法吗?
...全文
260 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Isnis-fallen 2018-08-08
  • 打赏
  • 举报
回复
没问题了, 就是 CWnd *pWnd = AfxGetMainWnd();
Isnis-fallen 2018-08-08
  • 打赏
  • 举报
回复
m_wndSplitter.GetPane(0, 0) // 左 m_wndSplitter.GetPane(0, 1) // 右 没有问题 目前问题 是 如何得到主对话框句柄 (从formview1里), formview1是主对话框一个切分子窗口 , 不得到 主对话框我没法调用 m_wndSplitter.GetPane(0, 0)
schlafenhamster 2018-08-08
  • 打赏
  • 举报
回复
那么
m_wndSplitter.GetPane(0, 0) // 左
m_wndSplitter.GetPane(0, 1) // 右
Isnis-fallen 2018-08-08
  • 打赏
  • 举报
回复
有 m_wndSplitter
schlafenhamster 2018-08-08
  • 打赏
  • 举报
回复
有没有 m_wndSplitter. ?
Isnis-fallen 2018-08-08
  • 打赏
  • 举报
回复
我 是 对话框切分窗口, 用不到 CMainFrame 目前问题 是 如何得到主对话框句柄 (从formview1里), formview1是主对话框一个切分子窗口
Isnis-fallen 2018-08-08
  • 打赏
  • 举报
回复
FindWindow 好像不能找子窗口, 只能找 top window 现在只好通过主对话框去 找那个 formview2 子窗口 在 formview1 里 HWND hWnd = ::GetParent(this->GetSafeHwnd()); 没能得到主对话框的 句柄 目前问题 是 如何得到主对话框句柄 (从formview1里), formview1是对话框一个切分子窗口
schlafenhamster 2018-08-08
  • 打赏
  • 举报
回复
"formview2 好像不能设置 caption, FindWindow 就不起作用"
使用窗口 类 ,不用 caption
schlafenhamster 2018-08-08
  • 打赏
  • 举报
回复
切分窗口的 两个子窗口
mainframe 中
virtual ~CMainFrame();
CHMI_manView* GetRightPane();// list
CLeftView* GetLeftPane(); // tree

// CMainFrame message handlers
CHMI_manView* CMainFrame::GetRightPane()
{
CWnd* pWnd = m_wndSplitter.GetPane(0, 1);
CHMI_manView* pView = DYNAMIC_DOWNCAST(CHMI_manView, pWnd);
return pView;
}
////
CLeftView* CMainFrame::GetLeftPane()
{
CWnd* pWnd = m_wndSplitter.GetPane(0, 0);
CLeftView* pView = DYNAMIC_DOWNCAST(CLeftView,pWnd);
return pView;
}


调用
// get rightpane
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();
CHMI_manView* pView=pMain->GetRightPane();
//
// get LeftTree
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();// m_pMainWnd;
CLeftView * pLeft=pMain->GetLeftPane();
Isnis-fallen 2018-08-07
  • 打赏
  • 举报
回复
formview1和 formview2 是 dialog 切分窗口的 两个子窗口, 设置为 child, 没有父子关系, 现要从 formview1向 formview2 发消息, 知道 formview2的ID , 如何得到 formview2 的窗口句柄? formview2 好像不能设置 caption, FindWindow 就不起作用
Isnis-fallen 2018-08-07
  • 打赏
  • 举报
回复
findwindow 第二个参数是另一个窗口的caption? 在另一个窗口里怎么设置这第二个参数的值啊?
schlafenhamster 2018-08-07
  • 打赏
  • 举报
回复
findwindow
Isnis-fallen 2018-08-07
  • 打赏
  • 举报
回复
这两个formview没有父子关系, 要从一个formview向另一个formview发消息, 我 想获得那个formview的窗口句柄 GetDlgItem 是获得窗口上一个控件的句柄吧, 能用来获得另一个窗口句柄吗? 是不是这样写 GetDlgItem(m_Hwnd1, IDD_FORMVIEW2)
三岁、就很帅 2018-08-07
  • 打赏
  • 举报
回复
hwndScroll = GetDlgItem(hwnd, IDC_SCROLL);

假设一个父窗口中有多个子窗口。那么本函数是返回一个子窗口句柄。

第一个参数:父窗口句柄

第二个参数:子窗口ID

再假设 父窗口是一个对话框,子窗口是对话框中的一个滚动条

那么上面代码就很清晰了 hwndScroll就是滚动条的窗口句柄HWND
schlafenhamster 2018-08-07
  • 打赏
  • 举报
回复
GetDlgItem
The GetDlgItem function retrieves the handle of a control in the specified dialog box.

HWND GetDlgItem(
HWND hDlg, // handle of dialog box or the other formview
int nIDDlgItem // identifier of control
);

Parameters
hDlg
Identifies the dialog box that contains the control.
nIDDlgItem
Specifies the identifier of the control to be retrieved.

15,979

社区成员

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

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