400分求解,VC中,怎么收到动态链接库里的非模态对话框的消息
例如dll里的调用非模态对话框中点击了"确定"后要处理一些数据,我有一个类作为接口了,也知道要用消息传递,就是不知道怎么实现,我想要个具体例子,请诸位高手用具体的代码来说...
例如dll里的调用非模态对话框中点击了"确定"后要处理一些数据,我有一个类作为接口了,也知道要用消息传递,就是不知道怎么实现,我想要个具体例子,请诸位高手用具体的代码来说明,最好附加注释,分数不是问题。
只求各位用代码说明 展开
只求各位用代码说明 展开
展开全部
使用发送自定义消息的方法,主要有以下几个步骤:
一:
在对话框的头文件中自定义一个消息:
#define WM_CUSTOM_1 WM_USER+1001
同时定义一个结构,用来传递数据(结构中的变量根据需要自行添加):
typedef struct _PARA_DATA
{
int nData1;
doulbe dData2;
char cData3;
} PARA_DATA, *PPARA_DATA;
PPARA_DATA m_psData;
二:
如果要点击了"确定"后要处理一些数据,那么在对话框的OnOK()函数中添加代码:
CWnd *pParent = GetParent();//获得父窗口指针
if(pParent)
{
//向父窗口发送自定义消息,并把要传递的数据作为wparam参数来传递,请提前为m_psData赋好值
pParent->SendMessage(WM_CUSTOM_1, (WPARAM)m_psData);
}
三:
在调用非模式对话框时,要把当前类的指针传给对话框,作为对话框的父窗口指针:
CXXXDlg *pXXXDlg = new CXXXDlg(this);
四:
添加自定义消息的响应代码:
在调用类头文件中添加消息映射函数声明:
afx_msg LRESULT OnCustomMessage(WPARAM wParam, LPARAM lParam=0);
在调用类CPP文件中添加消息映射:
BEGIN_MESSAGE_MAP(CXXX, CXX)
......
ON_MESSAGE(WM_CUSTOM_1, OnCustomMessage)
......
END_MESSAGE_MAP()
消息函数的实现:
LRESULT CXXX::OnCustomMessage(WPARAM wParam, LPARAM lParam)
{
//消息传递过来的数据
PPARA_DATA csData = (PPARA_DATA)wParam;
int nData1 = csData->nData1;
double dData2 = csData->dData2;
char cData3 = csData->cData3;
//下面自行添加数据的处理
......
}
一:
在对话框的头文件中自定义一个消息:
#define WM_CUSTOM_1 WM_USER+1001
同时定义一个结构,用来传递数据(结构中的变量根据需要自行添加):
typedef struct _PARA_DATA
{
int nData1;
doulbe dData2;
char cData3;
} PARA_DATA, *PPARA_DATA;
PPARA_DATA m_psData;
二:
如果要点击了"确定"后要处理一些数据,那么在对话框的OnOK()函数中添加代码:
CWnd *pParent = GetParent();//获得父窗口指针
if(pParent)
{
//向父窗口发送自定义消息,并把要传递的数据作为wparam参数来传递,请提前为m_psData赋好值
pParent->SendMessage(WM_CUSTOM_1, (WPARAM)m_psData);
}
三:
在调用非模式对话框时,要把当前类的指针传给对话框,作为对话框的父窗口指针:
CXXXDlg *pXXXDlg = new CXXXDlg(this);
四:
添加自定义消息的响应代码:
在调用类头文件中添加消息映射函数声明:
afx_msg LRESULT OnCustomMessage(WPARAM wParam, LPARAM lParam=0);
在调用类CPP文件中添加消息映射:
BEGIN_MESSAGE_MAP(CXXX, CXX)
......
ON_MESSAGE(WM_CUSTOM_1, OnCustomMessage)
......
END_MESSAGE_MAP()
消息函数的实现:
LRESULT CXXX::OnCustomMessage(WPARAM wParam, LPARAM lParam)
{
//消息传递过来的数据
PPARA_DATA csData = (PPARA_DATA)wParam;
int nData1 = csData->nData1;
double dData2 = csData->dData2;
char cData3 = csData->cData3;
//下面自行添加数据的处理
......
}
展开全部
一般情况,可以在构造对话框类的时候,把管理者的指针传进去,这样可以随时调用管理者的函数,如果是窗口类,也可以SendMessage。用法和本模块调用是一样的。
我资料里有联系方式。
我资料里有联系方式。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分数再多,也与我无关
我只是最近觉得人变懒了.要求自己每天写一篇技术文章
今天也注册了这个号.上来找些问题解决
PS: 这个问题,我不想回答.自己多查一下MSDN.
微软里每个程序员,MSDN光盘从来没有离开过光驱.
我只是最近觉得人变懒了.要求自己每天写一篇技术文章
今天也注册了这个号.上来找些问题解决
PS: 这个问题,我不想回答.自己多查一下MSDN.
微软里每个程序员,MSDN光盘从来没有离开过光驱.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议去买一些参考书或现场询问一些通晓VC的人,或者到电驴等下载一些VC教程,看看里面是否讲到类似问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多给点分,消息聊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询