1、在一个窗口初始时动态创建了几个按钮,可是如何才能让这些按钮响应鼠标事件呢?
(一般情况下都是类向导中给按钮添加事件)2、通过父窗口显示出窗口后,想通过子窗口中的一个控件触发父窗口中的一个事件?3、如何让派生一个CRichEdit类,使其响应鼠标点击事件?谢谢,各位,帮忙看看!
(一般情况下都是类向导中给按钮添加事件)2、通过父窗口显示出窗口后,想通过子窗口中的一个控件触发父窗口中的一个事件?3、如何让派生一个CRichEdit类,使其响应鼠标点击事件?谢谢,各位,帮忙看看!
解决方案 »
- 为一个菜单项添加消息映射函数,报parent class code is read only
- MoveWindow()运行出错!!
- 请教
- CListCtrl 选中哪一行,是怎么获得的??
- 怎样在对话框中加入菜单和工具栏还有状态栏
- m_pMainWnd在对话框程序中的作用是什么?为什么不能被多次赋值?
- 在用vc写导库程序(SQLSERVER-ORACLE)遇到的一个大字段(CLOB)问题
- 请教.这一段程序是什么意思?
- WH_KEYBOARD钩子与WH_MOUSE钩子顺序问题
- mfc怎么给几个子系统分配IP地址和端口?
- windows media format sdk 例子程序提示'CLSID_WMAsfWriter' : undeclared identifier错误(用vc6.0)
- 请教,客户端如何传递它创建的对象给DCOM服务?
另外你动态创建按钮时,也要指定id的,可以根据这些id做点事。
2)可以用让子类转发消息给父类。如果可能的话,可以自己在父类手工添加响应函数。
你看mfc自己生成的那些代码上面,有BEGIN_MESSAGEMAP等字样,这个就是消息映射,你要按照格式自己进行添加,2 不明白你说的事件是什么意思,是不是就是主窗口的一个方法或者是和函数?假设你的主窗口的类名是CMyDialog
那么你这么做
在子窗口的cpp里面包含mydialog.h这个头文件,然后用下面的代码
CMyDialog *p=(CMyDialog)::AfxGetApp()->GetMainWnd();
这个指针p就是指向主窗口的,然后就可以这样使用主窗口的方法(主窗口类的成员函数和成员变量)了。
p->XXXX();3 添加一个mfc的类,可以随便选择一个基类,也可以不选择,然后到这个类的h文件里面,找到类声明的地方,在后面加上
:public CRichEdit
可是动态创建了一个按钮后
(m_Btn7.Create("体育馆", WS_CHILD | WS_VISIBLE, CPoint(15 + 64 + 128, 63), cr, this,IDC_SPORT, 1, RGB(254, 247, 211), RGB(211, 247, 254), RGB(211, 247, 254), GetSysColor(COLOR_BTNFACE)); )我先是用PreTranslateMessage()方法获得鼠标点击处的控件
BOOL COwnSpereDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_LBUTTONDOWN)
{
CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));
::ClientToScreen(pMsg->hwnd,&point);
OnLButtonDown(0,point);
}
return CDialog::PreTranslateMessage(pMsg);
}然后又用鼠标左键事件使得动态创建的按钮上的文字发后改变
void COwnSpereDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (GetDlgCtrlID()==IDC_SPORT)
{
GetDlgItem(IDC_SPORT)->SetWindowText("haole");
}
CDialog::OnLButtonDown(nFlags, point);
}可是这样仍然不行,不知道怎么回事??是不是需要在消息映射里手工添加自己设置的另一个函数来实现呢??
谢谢!
void CMyButton::OnClicked() //BN_CLICKED响应函数
{
SetWindowText("haole");
}//另一个方法:
//随便拖入一个button,用向导建立dlg的CLICKED响应,再删除button,然后换成你的id。手工添加都免了.不知道,你的m_Btn7是什么
好了,
可是要是要是动态创建的CRichHand(CRichHand是由RichEdit派生出的一个新类)的呢?
如何实现鼠标的点击事件呢?
在主窗口内实现他们的单击事件
怎么办呢?我试着用5楼的朋友说的方法,好像也不行
第一个和第三个问题解决了,可是第二个还是不行。我的主窗口类是CTuShHuaXianDlg
按二楼朋友的说法,在另一个子窗口中的CPP文件中加入#include "TuShHuaXianDlg.h"
然后在需要响应父窗口事件的地方添加:
CTuShHuaXianDlg *p=(CTuShHuaXianDlg)::AfxGetApp()-> GetMainWnd();
可是编译时出现如下错误:error C2440: 'initializing' : cannot convert from 'class CTuShHuaXianDlg' to 'class CTuShHuaXianDlg *'这是怎么回事呢?
麻烦各位再帮忙看看,谢谢!
原来是这样就行了:
CTuShHuaXianDlg *pDlg = (CTuShHuaXianDlg*)GetParent();结贴给分了,谢谢楼上的各位!