社区
界面
帖子详情
知道一个窗口的ID,用什么函数得到它的句柄?
Aist-memory
2018-08-07 05:30:25
知道一个Formview窗口的ID,用什么函数得到它的句柄?
想实现在一个formview里 得到另一个formview的窗口句柄, 好向他发消息。 ID已知, 有办法吗?
...全文
270
15
打赏
收藏
知道一个窗口的ID,用什么函数得到它的句柄?
知道一个Formview窗口的ID,用什么函数得到它的句柄? 想实现在一个formview里 得到另一个formview的窗口句柄, 好向他发消息。 ID已知, 有办法吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Aist-memory
2018-08-08
打赏
举报
回复
没问题了, 就是 CWnd *pWnd = AfxGetMainWnd();
Aist-memory
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) // 右
Aist-memory
2018-08-08
打赏
举报
回复
有 m_wndSplitter
schlafenhamster
2018-08-08
打赏
举报
回复
有没有 m_wndSplitter. ?
Aist-memory
2018-08-08
打赏
举报
回复
我 是 对话框切分窗口, 用不到 CMainFrame 目前问题 是 如何得到主对话框句柄 (从formview1里), formview1是主对话框一个切分子窗口
Aist-memory
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();
Aist-memory
2018-08-07
打赏
举报
回复
formview1和 formview2 是 dialog 切分窗口的 两个子窗口, 设置为 child, 没有父子关系, 现要从 formview1向 formview2 发消息, 知道 formview2的ID , 如何得到 formview2 的窗口句柄? formview2 好像不能设置 caption, FindWindow 就不起作用
Aist-memory
2018-08-07
打赏
举报
回复
findwindow 第二个参数是另一个窗口的caption? 在另一个窗口里怎么设置这第二个参数的值啊?
schlafenhamster
2018-08-07
打赏
举报
回复
findwindow
Aist-memory
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.
通过
窗口
句柄
取得进程
ID
通过
窗口
句柄
取得进程
ID
,源码是易语言API
函数
GetWindowThreadProcess
Id
的应用教程。@易语言代码大全详解。
通过进程
ID
找到
窗口
句柄
.
通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.通过进程
ID
找到
窗口
句柄
.
VC进程
ID
获得主
窗口
句柄
获得进程名
VC获得进程
ID
获得主线程
ID
获得
窗口
句柄
获得主
窗口
获得进程名 1.
窗口
类名
窗口
句柄
窗口
标题
窗口
句柄
HWND FindWindow( LPCTSTR lpClassName, //
窗口
类名 可用 VC或者VS自带的Spy++查看 LPCTSTR lpWindowName //
窗口
标题 ); 举例: 以 记事本为例, 记事本
窗口
类名 为:NotePad,
窗口
标题 视按具体情况而定,假设为"新建 文本文档.txt - 记事本"
窗口
类名
窗口
句柄
TCHAR lpClassName[]=TEXT("NotePad"); HWND hWnd=::FindWindow(lpClassName,NULL); if(hWnd && IsWindow(hWnd)) ::ShowWindow(hWnd,SW_H
ID
E);
窗口
标题
窗口
句柄
TCHAR lpWindowName[]=TEXT("新建 文本文档.txt - 记事本"); HWND hWnd=::FindWindow(NULL,lpWindowName); if(hWnd && IsWindow(hWnd)) ::ShowWindow(hWnd,SW_H
ID
E); 2.
窗口
句柄
进程
ID
窗口
句柄
主线程
ID
要使用到的
函数
: DWORD GetWindowThreadProcess
Id
( HWND hWnd, //目标
窗口
句柄
LPDWORD lpdwProcess
Id
//返回目标
窗口
对应进程
ID
); 例子: DWORD dwProc
Id
=0;//存放返回的进程
ID
DWORD dwThread
Id
=0;//存放返回的主线程
ID
HWND hWnd=XXXX;//这里省略,可能用任务方式
得到
一个
窗口
的
句柄
.比如用1中的方法. dwThread
Id
=GetWindowThreadProcess
Id
(hWnd,&dwProc
Id
);//同时
得到
进程
ID
和主线程
ID
. 3.
窗口
HAND CWnd 用CWnd::FromHandle(HWND hWnd)
函数
.很多类都有这个
函数
. 4.进程名 进程
ID
(注:进程名,即在"任务管理器"中看到的名字) 用CCheckObject类(详细实现源文件); 例子: 以记事本为例,进程名为 NOTEPAD.EXE (不一定是大写哦,
得到
任务管理器是显示而定); CCheckObject ch; TCHAR Name[]=TEXT("NOTEPAD.EXE"); DWORD dwProc
Id
=ch.GetProcess
Id
(Name); 5. 进程名 主线程
ID
例子: CCheckObject ch; TCHAR Name[]=TEXT("NOTEPAD.EXE"); DWORD dwThread
Id
=ch.GetThread
Id
(Name); 6. 进程名 主
窗口
句柄
CCheckObject ch; TCHAR Name[]=TEXT("NOTEPAD.EXE"); HWND hWnd=ch.GetTargetWindowHanle(Name); 7. 其它说明 从CCheckObject类和上面的源码中,不难写出从 进程
ID
主线程
ID
进程
ID
主
窗口
句柄
主线程
ID
--->主
窗口
句柄
等等其它类似转换. 对于主
窗口
,特点如下: A. 不能用进程
ID
,要用线程
ID
,因为
一个
进程可能有多个线程,每个线程都可能会有主
窗口
. B. 主
窗口
不会有WS_CHILD属性 C. 主
窗口
没有父
窗口
D. 主
窗口
一般都有子
窗口
(这个不是一定的,但是具有普遍性)
易语言通过
窗口
句柄
取得进程
ID
易语言通过
窗口
句柄
取得进程
ID
源码,通过
窗口
句柄
取得进程
ID
,
句柄
获得进程
ID
_DLL
vb-EnumChildWindows所有
窗口
及子
窗口
句柄
免费版
vb-EnumChildWindows所有
窗口
及子
窗口
句柄
是一款vb枚举
窗口
枚举出所有父
窗口
和其对应的子
窗口
句柄
信息获取查看工具,每个子
窗口
控件都具有
一个
在其兄弟中唯一的
窗口
句柄
和
ID
值。对于
句柄
和
ID
这两者,
知道
其中的
一个
您就可以获得另
一个
。如果您
知道
子
窗口
控件的
窗口
句柄
,那么您可以用下面的叙述来获得
ID
。 基本信息
函数
功能:枚举
一个
父
窗口
的所有子
窗口
。
函数
原型: BOOL EnumChild
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章