怎样得到父窗口指针?

yxq123 2006-11-15 03:11:15
怎样得到父窗口指针?能不能举个具体的例子?
具体讲就是在单文本的客户区手动添加一个按钮,
怎样添加,又怎样添加他的消息响应?
...全文
799 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
一分之千 2006-11-20
  • 打赏
  • 举报
回复
CButton button1;
CRect rectmenu[4]={CRect(802,400,857,420),CRect(857,400,912,420),CRect(912,400,967,420),CRect(967,400,1018,420)};
button1.Create(_T("MENU1"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rectmenu[0],this,ID_MENUBUTTON1);
这个加什么好多地方都可以,加在OnInitialUpdate里吧
yxq123 2006-11-20
  • 打赏
  • 举报
回复
美没有解决,结贴先,!!!!!
yxq123 2006-11-16
  • 打赏
  • 举报
回复
shl6894() 请问这段代码在哪里添加
CButton button1;
CRect rectmenu[4]={CRect(802,400,857,420),CRect(857,400,912,420),CRect(912,400,967,420),CRect(967,400,1018,420)};
button1.Create(_T("MENU1"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rectmenu[0],this,ID_MENUBUTTON1);
具体在哪个函数里面.谢谢!!!!
一分之千 2006-11-15
  • 打赏
  • 举报
回复
单纯加一个button的话 可以下边这样加 然后手动加其响应函数。如下所示。你要取得父窗口指针干吗?他的父窗口就是VIEW吧/直接定义一个CxxxView的指针就可以吧?

.h里边
protected:
....
afx_msg void OnMenuButton1();
...
//}}AFX_MSG
DECLARE_MESSAGE_MAP()


.CPP里边
#define ID_MENUBUTTON1 1820


CButton button1;
CRect rectmenu[4]={CRect(802,400,857,420),CRect(857,400,912,420),CRect(912,400,967,420),CRect(967,400,1018,420)};
button1.Create(_T("MENU1"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rectmenu[0],this,ID_MENUBUTTON1);

BEGIN_MESSAGE_MAP(CRadarFullView, CFormView)
//{{AFX_MSG_MAP(CRadarFullView)
.....
ON_BN_CLICKED(ID_MENUBUTTON1, OnMenuButton1)
......
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


void CxxxxView::OnMenuButton1()
{
。。。。。
}
creamymami 2006-11-15
  • 打赏
  • 举报
回复
那用view类指针就行了
yxq123 2006-11-15
  • 打赏
  • 举报
回复
this 不行,我试过了。不是对话框,是单文本客户区。
dfkoko 2006-11-15
  • 打赏
  • 举报
回复
GetParent()
creamymami 2006-11-15
  • 打赏
  • 举报
回复
Button所在的对话框就是它的夫窗口,所以pParent应该是那个对话框的指针
creamymami 2006-11-15
  • 打赏
  • 举报
回复
估计这里的pParent应该写this
yxq123 2006-11-15
  • 打赏
  • 举报
回复
我也不知道应该在哪个类中添加,
用什么调用父窗口指针。
我是这样添加的:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(100,100,120,130),pParent, 1);
pParent是父窗口指针,不知道怎样得到。
olidyu 2006-11-15
  • 打赏
  • 举报
回复
在resource.h里,现把这个按钮的ID define了,就可以直接先写消息响应,和一般控件按钮一样写。

你指的客户区域是指单文档的窗体?那你是在哪个类里做这个操作?
e_felix 2006-11-15
  • 打赏
  • 举报
回复
用GetParent()函数可以得到父窗口指针 在父窗口相应按钮到WM_COMMAND消息好了
函数功能 在窗口列表中寻找与指定条件相符的第一个子窗口 。 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。 参数; (1)hwndParent:要查找的子窗口所在的窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的窗口中搜索子窗口)。 如果hwndParent为 0 ,则函数以桌面窗口窗口,查找桌面窗口的所有子窗口。 Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。 (2)hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。 (3)lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。 (4)lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。 返回值 Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError 如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。 若想获得更多错误信息,请调用GetLastError函数。
Spy++ Lite 2.4 Build 20080512 Spy++ Lite是一款强有力的编程辅助工具,对分析窗体结构有独到之处。可以以十六进制和十进制两种不同方式显示窗口句柄等所有数值。本软件还可以简单调节窗口的状态和形为,如是否可见,是否可用,最大化,激活等。除此以外,您还可以把它当作一个截图的小工具来用。:) 下面举两个例子来小试牛刀: 1、激活灰色按钮: 打开任一文件的属性窗口,它的右下角处“应用”按钮都是不可用的(灰色的)。拖动本软件的探测器指针选中该按钮。切换至“消息”标签页,勾选“窗口可用”。看到了吧?“应用”按钮被我们激活了。 2、监视IE上网记录: 用本软件的探测器指针选中IE的地址栏。看到它的窗口类名为Edit;切换至“窗口”标签页,点击“窗口”标签,使窗口成为当前窗口;切换到“类”标签页,看到其类名为ComboBox;再依照上步点击,将得到窗口类名依次是ComboBoxEx32、ReBarWindow32、WorkerW,直到最外层的IEFrame。此时再点击“子窗口列表”按钮,依次双击子窗口,看看能否找到地址栏Edit。窗体结构清楚了,我们就不难用FindWindowEx、SendMessage、GetClassName、GetWindowText等几个API函数来监视上网记录了。 升级日志: 2.2-2.4 增加功能: 1、更换内部控件,引用主题风格; 2、修正细节问题; 3、提供不同编程语言的开源版本。 2.1-2.2 增加功能: 1、去除对对话框控件的依赖; 2、修正进程ID的显示BUG。 2.0-2.1 增加功能: 1、可以直接选中不可用的窗口; 2、子窗口列表; 3、进入多级子窗口并可导出。 1.1-2.0 增加功能: 1、显示窗口ID、进程ID、程序文件路径; 2、窗口样式、扩展样式、类样式并列表给出; 3、消息功能,改变窗口的最大化、最小化、是否可见、是否可用等状态; 4、窗口截图。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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