在控件里如何接收信息? 我做了一个控件,但不知如何才能够接收到底层传给窗口的信息,并处理之? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 譬如它有一个函数aa(HWND hWnd);我调用该函数后,在某情况下就会该窗口就会收到硬件发来的信息,你明了吗? 是啊,我是调用该函数绑定了控件的父窗口,然后重载控件父窗口的windowpro函数来解决问题的,但想想这有多笨啊?明明我这控件就有自己的句柄,但为什么不能用呢? Greaitm(夜草) :仅作参考!控件的句柄和窗口的句柄好像还是有区别的!控件(ACTIVEX)我想是通过CoCreateInstance之类的建立的,返回值应该是一个HRESULT,在使用者这边好像变成了DWORD。这与窗口的句柄之间似乎要变换一下,可能要用SmartPtr之类的。 不是,控件有个成员变量 hWnd,是从CWnd里继承下来的 LRESULT CALLBACK AFX_EXPORT MyCallWndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); CWnd * pWnd; pWnd=CWnd::FromHandlePermanent(hWnd); if (pWnd==NULL) { pWnd = new CMyCon(); pWnd->Attach(hWnd); } ASSERT(pWnd->m_hWnd==hWnd); ASSERT(pWnd==CWnd::FromHandlePermanent(hWnd)); LRESULT lResult=::AfxCallWndProc(pWnd,hWnd,Message,wParam,lParam); return lResult;}BOOL CMyCon::RegisterComponent(HINSTANCE hInstance){ WNDCLASS wc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hCursor = ::LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)::GetStockObject(LTGRAY_BRUSH); wc.hIcon = 0; wc.hInstance = hInstance; wc.lpfnWndProc = MyCallWndProc; wc.lpszClassName ="WSWCOMPONENT"; wc.lpszMenuName = NULL; wc.style = CS_GLOBALCLASS; return (::RegisterClass(&wc)!=0);} OnCommand根据ID号判断即可 200分求CListCtrl显示缩略图功能 如何获得excel的保存格式 ONPAINT重载后不能正常工作的问题 高手请进! 关于窗口过程子类化问题 嵌入ole容器的 office文档如何实现打印预览 请问谁有多播的自编程序? 各位大侠:如何打开ACCESS 2000数据库(已知密码但不知用户名)在线等待 有关客户化软件配置的问题,有做过的吗?请介绍一下经验。 CEDIT设置多行属性,能不能按ENTER换到下一行? 谁知道多线程下载怎么做? 关于TRACE函数的一个奇怪的现象----为何不能在调试窗口全部输出数值???? 好想好想有个女朋友,可是我不太会说话,怎么办?
我调用该函数后,在某情况下就会该窗口就会收到硬件发来的信息,你明了吗?
MyCallWndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWnd * pWnd;
pWnd=CWnd::FromHandlePermanent(hWnd);
if (pWnd==NULL)
{
pWnd = new CMyCon();
pWnd->Attach(hWnd);
}
ASSERT(pWnd->m_hWnd==hWnd);
ASSERT(pWnd==CWnd::FromHandlePermanent(hWnd));
LRESULT lResult=::AfxCallWndProc(pWnd,hWnd,Message,wParam,lParam);
return lResult;
}BOOL CMyCon::RegisterComponent(HINSTANCE hInstance)
{
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hCursor = ::LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)::GetStockObject(LTGRAY_BRUSH);
wc.hIcon = 0;
wc.hInstance = hInstance;
wc.lpfnWndProc = MyCallWndProc;
wc.lpszClassName ="WSWCOMPONENT";
wc.lpszMenuName = NULL;
wc.style = CS_GLOBALCLASS;
return (::RegisterClass(&wc)!=0);
}
根据ID号判断即可