控件子类化的问题!!!! [问题点数:20分,结帖人jacky1019]

Bbs2
本版专家分:129
结帖率 100%
Bbs7
本版专家分:15868
Bbs5
本版专家分:2804
Bbs2
本版专家分:129
Edit控件的子类化
实现Edit<em>控件</em>的子<em>类化</em>,使其只能接受数字和删除键
ActiveX控件类化
我用MFC的ActiveX<em>控件</em>的向导创建一个ActiveX<em>控件</em>,并在向导中选择已有的一个Windows<em>控件</em>进行子<em>类化</em>(比如树<em>控件</em>“SysTreeView32”)。编译连接后,我能在vb窗体中添加树<em>控件</em>,运行后能显示树<em>控件</em>(是空白的)。我的<em>问题</em>是:我想向树<em>控件</em>中加入项目、改变图片等,我怎么才能获取该树<em>控件</em>的对象?
控件类化问题请教
我在外边已经重载了clistctrl 类 我怎么用 我这个类来替换掉我的clistview中的list呢?rn用m_listEx.SubclassWindow(GetListCtrl().m_hWnd)怎么不行啊?
类化EDIT控件
怎么自己写一个edit<em>控件</em>,让它的长随着输入的字的长度改变.就像在电脑桌面图标上点击重命名时出来的Edit一样.rnrn求大侠指教!
控件类化的消息处理
<em>控件</em>子<em>类化</em>以后,只能处理标准的wm消息,对通过资源ID向父窗口的消息不能处理。 附录:孙皓等编著的《visual c++ 范例大全》的实例62有误。
关于子类化控件
<em>问题</em>是这样,我做了个钩子程序调用Setwindowlongptr来子<em>类化</em>一个窗口上listview<em>控件</em>,钩子没有任务<em>问题</em>,setwindowlongptr也能调用有返回,但被我hook的那个窗口却出了<em>问题</em>,老是弹出0xXXXXX内存不能read,然后就崩掉了。调试许久找不出原因,后来我尝试了一下用我的dll去子<em>类化</em>别的窗口,结果却正确了,我用spy++,查看了一下两个窗口,发现失败的那个窗口,原先是已经被子<em>类化</em>了的。而成功被我子<em>类化</em>的那个窗口则没有,除此两者没有太大差别。不知是不是因为已经子<em>类化</em>过的窗口就不能再被子类了?因为我的程序去子<em>类化</em>别的窗口的时候可都是成功的。就子<em>类化</em>listview的时候有<em>问题</em>。源码我回去后再贴出来给大家看看,希望可以得到高价指示!
请问子类化控件
请问在子<em>类化</em><em>控件</em>中加入lbuttondown消息和在onocmcommand中加入rnrnrnswitch(nnotifycode)rncase BN_CLICKED:rnafxmessageBOx("aaaaa");rnbreak;rnrn产生的效果是一样的都是单击<em>控件</em>后弹出对话框,这两中方式有什么不同呢,我有点糊涂,请指教!!!!!!!!!!!!!!1rn
类化==超类化
子<em>类化</em>和超<em>类化</em>是不是一回事?
关于activex控件类化
请问在子<em>类化</em><em>控件</em>中加入lbuttondown消息和在onocmcommand中加入rnrnrnswitch(nnotifycode)rncase BN_CLICKED:rnafxmessageBOx("aaaaa");rnbreak;rnrn产生的效果是一样的都是单击<em>控件</em>后弹出对话框,这两中方式有什么不同呢,我有点糊涂,请指教!!!!!!!!!!!!!!1
类化问题
[code=C/C++]rnvoid CMyButton::PreSubclassWindow()rnrn rn ModifyStyle(0, BS_OWNERDRAW);rn SetButtonFont(_T("宋体"), 12, FW_NORMAL);rn CButton::PreSubclassWindow(); rnrn[/code]rnrn自己重新派生了个CButton类,子<em>类化</em>出现了<em>问题</em>,只能在对话框中更改Owner Draw属性,不知道为什么?
再谈子类化问题
近日看到一个关于全局子<em>类化</em>的帖子,原帖地址:rnhttp://topic.csdn.net/u/20080414/16/50c919fe-bab9-4713-bea7-c1b184dcf457.htmlrnrn读后想到一个<em>问题</em>,全局子<em>类化</em>的方式是否过于霸道了,这种方法会影响到一个程序rn所有界面中的同类<em>控件</em>,而不是限制在某一个界面(如对话框)之内。这恐怕并非rn我们想要的结果!rnrn我在想,可不可以在一个界面(如对话框)之内,用一个<em>控件</em>类去子<em>类化</em>所有需要的rn<em>控件</em>(以资源ID去遍历);而不是为每一个<em>控件</em>匹配一个<em>控件</em>类。这样是否更好些:)
关于 子类化问题
RT.大概是这个意思吧.rn在一个D3D游戏中:就是War3. 注入了一个DLL。用来实现:在魔兽中画一个小工具条:用来显示当前时间,和实现一些无聊的功能:如 不停的点击右键。有的地图要抓鱼。。。rn现在实现 左键点击工具条时 画面一个设置面板时出了<em>问题</em>了。 如果 魔兽和 dll 同时响应了 左键点击. 如果工具条出现在war3 的一些按钮上面。那么魔兽也会有反应.rn现在的目的是。如何让条件符合(鼠标点下的位置。处于工具条的Rect 中)时,只让dll 响应点击rnrnDLL内容为:rn当注入魔兽后: rnOldProc:=FARPROC(GetWindowLong(handle,GWL_WNDPROC));rnSetWindowLong(handle,GWL_WNDPROC,Longint(@WinProc));rnhandle 为 魔兽的 的HANDLErn//rnrnFunction WinProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;rnvar s:pchar;rnbeginrn case Msg ofrn WM_LBUTTONdown:OnMouseDown(hwnd, lParam); // rn。。。。。。。。rn end;rn Result:=CallWindowProc(OldProc,Hwnd,Msg,wParam,lParam);rnend;rnrn在OnMouseDown 中会对座标进行判断。如果座标在 工具条的 Rect 内。那么就画出设置 画面.rnrn现在的<em>问题</em>是:rn照上面的写法. 当运行进入OnmouseDown 后 不管OnMouseDown 判断的结果如何,都会返回 CallWindowProc 这里魔兽也收到消息了。如果当前座标下有魔兽的面板。那么这个面板也会响应 鼠标的点击。rnrn如何让 WinProc 处理时。当座标符合条件时。不要让 主程序(War3)收到消息?rnrn有想过用:rnFunction WinProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;rnvar s:pchar;rnVar Bflg:bool;rnbeginrn case Msg ofrn WM_LBUTTONdown:rn beginrn Bflg:=Checked(x,y);//判断座标rn OnMouseDown(hwnd, lParam); // rn end;rn。。。。。。。。rn end;rn if not Bflg thenrn Result:=CallWindowProc(OldProc,Hwnd,Msg,wParam,lParam);rnend;rnrn但是 这样会不会 让目标程序(War3) 负担过重。或者造成其他的什么<em>问题</em>?有没有别的解决办法?rn
关于子类化问题
如果一个按钮已经通过类向导定义了变量rn现在还想子<em>类化</em>它行吗?怎么搞。我弄了好多次都报错。rn我知道原因是该按钮已经榜定了一个成员变量。如果没有用类向导定义变量就可以子<em>类化</em>rn高手支招。rn
类化问题
在qq的聊天窗口,当按下"发送"按钮之前,执行一段我的代码rn希望能用全局消息钩子加子<em>类化</em>函数实现rnWH_CALLWNDPROC setwindowslongrn因为,用全局钩子消息,我已会rnrn我在学子<em>类化</em>函数的用法?
类化问题(vc++)
各位高手请了:rn 子<em>类化</em>有甚作用,能否举一个例子,给出一段代码,顺带说一说超类
类化问题
我常看到从一个CDialog或者一个其他的<em>控件</em>派生出一个新的类rn使用的时候,要SubClassXXXX,子<em>类化</em>一下rnrn请问子<em>类化</em>到底有什么作用,有什么好处rn如果不自<em>类化</em>回怎么样??rnrn能不能说的简单点、详细点,我在网上搜的文章说的都很模糊,看得晕晕的rn
关于子类化问题
我写了一个从CToolBar继承的类,代码如下:rnclass CPlayControlBar :public CWindowImplrnrnpublic:rn CPlayControlBar(void);rnpublic:rn ~CPlayControlBar(void);rnrn BOOL Create(HWND hParent, RECT rect, UINT nResourseID);rnrnrn HWND CreateSimpleToolBarCtrl(HWND hWndParent, RECT rect,UINT nResourceID, /*HWND hWnd,*/BOOL bInitialSeparator = FALSE, rn DWORD dwStyle = ATL_SIMPLE_TOOLBAR_STYLE, UINT nID = 1000);rn;rnrnBOOL CPlayControlBar::Create(HWND hParent, RECT rect, UINT nResourseID)rnrn //CToolBarCtrl::Create(hParent,rect,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TBSTYLE_TOOLTIPS);rn HWND hWnd = CreateSimpleToolBarCtrl(hParent, rect, nResourseID,TRUE, WS_CHILD|WS_VISIBLE);rn /*int n = CWindowImpl::SubclassWindow(m_hWnd);*/rn rn SubclassWindow(hWnd);rnrnrnHWND CPlayControlBar::CreateSimpleToolBarCtrl( HWND hWndParent, RECT rect,UINT nResourceID,/* m_hWnd m_hWnd,*/BOOL bInitialSeparator, DWORD dwStyle, UINT nID)rnrn HINSTANCE hInst = ATL::_AtlBaseModule.GetResourceInstance();rnrn HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(nResourceID), RT_TOOLBAR);rn if (hRsrc == NULL)rn return NULL;rnrn HGLOBAL hGlobal = ::LoadResource(hInst, hRsrc);rn if (hGlobal == NULL)rn return NULL;rnrn _AtlToolBarData* pData = (_AtlToolBarData*)::LockResource(hGlobal);rn if (pData == NULL)rn return NULL;rnrn ATLASSERT(pData->wVersion == 1);rnrn WORD* pItems = pData->items();rn int nItems = pData->wItemCount + (bInitialSeparator ? 1 : 0);rn TBBUTTON* pTBBtn = (TBBUTTON*)_alloca(nItems * sizeof(TBBUTTON));rnrn const int cxSeparator = 8;rnrn // set initial separator (half width)rn if(bInitialSeparator)rn rn pTBBtn[0].iBitmap = cxSeparator / 2;rn pTBBtn[0].idCommand = 0;rn pTBBtn[0].fsState = 0;rn pTBBtn[0].fsStyle = TBSTYLE_SEP;rn pTBBtn[0].dwData = 0;rn pTBBtn[0].iString = 0;rn rnrn int nBmp = 0;rn for(int i = 0, j = bInitialSeparator ? 1 : 0; i < pData->wItemCount; i++, j++)rn rn if(pItems[i] != 0)rn rn pTBBtn[j].iBitmap = nBmp++;rn pTBBtn[j].idCommand = pItems[i];rn pTBBtn[j].fsState = TBSTATE_ENABLED;rn pTBBtn[j].fsStyle = TBSTYLE_BUTTON;rn pTBBtn[j].dwData = 0;rn pTBBtn[j].iString = 0;rn rn elsern rn pTBBtn[j].iBitmap = cxSeparator;rn pTBBtn[j].idCommand = 0;rn pTBBtn[j].fsState = 0;rn pTBBtn[j].fsStyle = TBSTYLE_SEP;rn pTBBtn[j].dwData = 0;rn pTBBtn[j].iString = 0;rn rn rnrn HWND hWnd = ::CreateWindowEx(0, TOOLBARCLASSNAME, NULL, dwStyle,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,hWndParent, NULL,rn ATL::_AtlBaseModule.GetModuleInstance(), NULL);rnrn if(hWnd == NULL)rn rn ATLASSERT(FALSE);rn return NULL;rn rnrn ::SendMessage(hWnd, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0L);rnrn // check if font is taller than our bitmapsrn CFontHandle font = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0L);rn if(font.IsNull())rn font = AtlGetDefaultGuiFont();rn LOGFONT lf = 0 ;rn font.GetLogFont(lf);rn WORD cyFontHeight = (WORD)abs(lf.lfHeight);rnrn#ifndef _WIN32_WCErn WORD bitsPerPixel = AtlGetBitmapResourceBitsPerPixel(nResourceID);rn if(bitsPerPixel > 4)rn rn COLORREF crMask = CLR_DEFAULT;rn if(bitsPerPixel == 32)rn rn // 32-bit color bitmap with alpha channel (valid for Windows XP and later)rn crMask = CLR_NONE;rn rn#if (_ATL_VER >= 0x0700)rn HIMAGELIST hImageList = ImageList_LoadImage(ATL::_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(nResourceID), pData->wWidth, 1, crMask, IMAGE_BITMAP, LR_CREATEDIBSECTION | LR_DEFAULTSIZE);rn#else //!(_ATL_VER >= 0x0700)rn HIMAGELIST hImageList = ImageList_LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(nResourceID), pData->wWidth, 1, crMask, IMAGE_BITMAP, LR_CREATEDIBSECTION | LR_DEFAULTSIZE);rn#endif //!(_ATL_VER >= 0x0700)rn ATLASSERT(hImageList != NULL);rn ::SendMessage(hWnd, TB_SETIMAGELIST, 0, (LPARAM)hImageList);rn rn elsern#endif //!_WIN32_WCErn rn TBADDBITMAP tbab = 0 ;rn tbab.hInst = hInst;rn tbab.nID = nResourceID;rn ::SendMessage(hWnd, TB_ADDBITMAP, nBmp, (LPARAM)&tbab);rn rnrn ::SendMessage(hWnd, TB_ADDBUTTONS, nItems, (LPARAM)pTBBtn);rn ::SendMessage(hWnd, TB_SETBITMAPSIZE, 0, MAKELONG(pData->wWidth, max(pData->wHeight, cyFontHeight)));rn const int cxyButtonMargin = 7;rn ::SendMessage(hWnd, TB_SETBUTTONSIZE, 0, MAKELONG(pData->wWidth + cxyButtonMargin, max(pData->wHeight, cyFontHeight) + cxyButtonMargin));rnrn return hWnd;rnrn为什么这样,如果我不把用CreateSimpleToolBarCtrl创建的工具条子<em>类化</em>的话,就可以显示工具条上的图片,但一旦用了SubclassWindow,这样连图片都看不到了。
类化的一个问题
当在一个对话框程序中子<em>类化</em>一个控制时,要在相哪些文件中INCLUDE.rnrn比如说,在一个叫SubClassTest的App中,只有一个以话框,将对话框中的Button子<em>类化</em>,rnButton的子类名叫做CMoveButton.rnrnrn
C++子类化问题
C++怎么封装Win32APirn不用mfc,封装自己的窗口类。
关于子类化问题
请问通过DDX_Control()关联<em>控件</em>与变量方法和subclassDlgItem()的效果是一样的吗?相比前者更简单.为什么很多人都用后者呢?
类化
什么是子<em>类化</em>?起什么作用?rn注册类又是什么意思?起什么作用?用来干什么的
关于子类化问题
我有一个继承自CMDIFrameWnd的MDI1的主窗口类.rn我在MDI1上继承了MDI2.rn在MDI1中有一个Crebar m_rebar.对象.rn我想改变MDI2中m_rebar的显示效果.想用子<em>类化</em>SubclassWindow方法.rn我在Crebar 上继承了Crebar1类.rnint MDI1::OnCreate(LPCREATESTRUCT lpCreateStruct)rnrn if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)rn return -1;rn m_ReBar.Create(this,0,WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN |CBRS_TOP);//建立ReBar.rn ....rnrnint MDI2::OnCreate(LPCREATESTRUCT lpCreateStruct)rnrn if (MDI1::OnCreate(lpCreateStruct) == -1)rn return -1;rn...rn m_OmsRebar.SubclassWindow(m_ReBar.m_hWnd); //出错rn...rnrnrn请问应该如何使用 SubclassWindow 方法
类化组合框问题
[img=http://hi.csdn.net/attachment/201007/12/21298_1278942992YtTM.gif][/img]rn写了一个文本框,就是上面那个好看点的那个。rnrn然后写了一个自己的组合框,在onctlcolor中子<em>类化</em>组合框的文本框部分。rnrn代码如下:rnHBRUSH CMyComb::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)rnrn HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);rnrn // TODO: 在此更改 DC 的任何属性rn if (nCtlColor==CTLCOLOR_EDIT)rn rn if (m_MyEdit.GetSafeHwnd()==NULL)rn rn m_MyEdit.SubclassWindow(pWnd->m_hWnd);rn MessageBox(_T("已经被子<em>类化</em>"));rn rn rn // TODO: 如果默认的不是所需画笔,则返回另一个画笔rn return hbr;rnrnrnF5,运行后弹出"已经被子<em>类化</em>",说明程序是运行到m_MyEdit.SubclassWindow(pWnd->m_hWnd)这行的,但为什么界面没有变化,具体看上图
MFC子类化问题
我在子<em>类化</em>edit时,最后提示错误“fatal error C1083: Cannot open include file: 'CSuperEdit.h': No such file or directoryrnError executing cl.exe.”rn我要求编辑框只能输入数字(包括小数),当输入其他字符时报错。
ComboBox子类化问题
[code=C/C++]rnHBRUSH CMyCombobox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)rnrn HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);rnrn // TODO: 在此更改 DC 的任何属性rnrn // TODO: 如果默认的不是所需画笔,则返回另一个画笔rn if(nCtlColor == CTLCOLOR_STATIC && m_static.GetSafeHwnd() == NULL)rn rn m_static.SubclassWindow(pWnd->GetSafeHwnd());rn rn if(nCtlColor == CTLCOLOR_BTN)rn rn int a = 5;rn rn if(nCtlColor == CTLCOLOR_LISTBOX && m_list.GetSafeHwnd() == NULL)rn rn m_list.SubclassWindow(pWnd->GetSafeHwnd());rn m_list.SendMessage(WM_NCPAINT,0,0);rn rn return hbr;rn[/code]rnrn<em>问题</em>1:rnMSDN描述A combo box consists of a list box combined with either a static control or edit controlrnDropList风格时 为什么rn[code=C/C++]if(nCtlColor == CTLCOLOR_STATIC && m_static.GetSafeHwnd() == NULL)rn rn m_static.SubclassWindow(pWnd->GetSafeHwnd());//调用不到?rn rn[/code]rncombobox的drop-down arrow 是个按钮吗?可以子<em>类化</em>这个按钮吗?(CTLCOLOR_BTN 同样调用不到)rnrn<em>问题</em>2:rn子<em>类化</em>listbox后 static control or edit control不能显示当前选择的Item的文本。rn这些<em>问题</em>如何解决?rnrn
propertypage子类化问题
请问一下我在CPropertysheet类中加了几个CPropertyPage,我想象QQ游戏一样双击某个页的标签就关闭这个页,怎么来实现啊?这个响应的消息应该怎么加?急!不胜感激rnrn别人告诉我的方法为:rnCPropertySheet::GetTabControl()rnCTabCtrl* GetTabControl( )rn先自己写一个从CTabCtrl派生来的TabCtrl,然后再去子<em>类化</em>GetTabControl返回的句柄,这样你就可以在你的派生类中响应双击了.rnrn确实实现了,可行,但是当我动态打开第三个page时,rnaddpage();rn然后setactivepage()时会出现栈溢出啊?这是什么原因啊?
类化mshflexgrid问题
现在用这个mshflexgrid<em>控件</em>,我想在每个单元格里面显示一个背景图片,然后根据数据库里面的内容不同,在背景图片上显示不同的图标,因为每个背景图片可能不一样,而且每个单元格显示的图标有很多种并且也都不相同,所以想子<em>类化</em>msflexgrid实现显示图标的功能,但是对于子<em>类化</em>一窍不通,谁给指点一下,有现成的例子就更好了。
求救,子类化问题
LRESULT CFormWorkTicket2::EditWndProc(HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam)rnrn ASSERT(s_OriginWndProc != NULL);rn HDC hdc;rn RECT rc;rn PAINTSTRUCT ps;rn TCHAR szText[MAX_PATH];rn switch(nMsg)rn rn case WM_PAINT:rn hdc = ::BeginPaint(hwnd,&ps);rn ::GetWindowRect(hwnd,&rc);rn ::MoveToEx(hdc,0,rc.bottom-rc.top-5,NULL);rn ::LineTo(hdc,rc.right-rc.left,rc.bottom-rc.top-5);rn ::EndPaint(hwnd,&ps);rn return 0;rn rn rn return ::CallWindowProc(s_OriginWndProc,hwnd,nMsg,wParam,lParam);rnrnEdit中的文字显示不出来,当然,如果在父窗口中对Edit来个SetFocus就会搞定,请问,可有其它方法?
类化问题
在qq的聊天窗口,当按下"发送"按钮之前,执行一段我的代码 rn希望能用全局消息钩子加子<em>类化</em>函数实现 rnWH_CALLWNDPROC setwindowslong rn因为,用全局钩子消息,我已会 rnrn我在学子<em>类化</em>函数的用法?rnrnlibrary TmHook; rnrnuses rn SysUtils, rn Classes, rn Windows, rn Messages, rn CommCtrl; rnvar rn hhook: Windows.HHOOK; rn hwndListView: HWND; rn na:array[0..300] of char; rn oldWndProc: Integer; rn$R *.res rnfunction WindowProc(hwnd: HWND; msg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; rn begin rn case Msg of rn WM_LBUTTONDOWN: rn MessageBox(hwndListView,'你好!','提示',MB_OK); rn end; rn Result := CallWindowProc(TFNWndProc(oldWndProc), hwnd, msg, wp, lp); rnend; rnfunction TmHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): Integer; stdcall; rnvar rn cwp: PCwpStruct; rn m:TPoint; rnbegin rn Result := 0; rn if (nCode < 0) then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn cwp := PCwpStruct(lParam); rn if cwp^.message <> WM_COMMAND then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn GetCursorPos(m); rn GetWindowText(WindowFromPoint(m),na,299); rn if lstrcmpi('发送(S)',na) <>0 then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn hwndListView:=WindowFromPoint(m); rn oldWndProc := SetWindowLong(hwndListView, GWL_WNDPROC, Integer(@WindowProc)); rn end; rnprocedure Hook(bEnable: Boolean); stdcall; export; rnbegin rn if bEnable then rn begin rn if hhook = 0 then rn begin rn hhook := SetWindowsHookEx(WH_CALLWNDPROC, TmHookProc, HInstance, 0); rn end; rn end rn else rn begin rn if hhook <> 0 then rn begin rn UnhookWindowsHookEx(hhook); rn hhook := 0; rn end; rn end; rnend; rnexports rn Hook; rnbegin rn hhook := 0; rn hwndListView := 0; rn oldWndProc:=0; rnend. rn到底哪里错了,一运行,qq就自动关闭?? rn
CIPAddressCtrl 子类化问题
该<em>控件</em>右键粘贴 时,会把一些非数字字符写进去。rn因此需要进行控制,通过SPY++发现 其实是由 几个CEdit组成的。rn然后 想通过 CEdit 的WM_PASTE进行处理。rnrn事实上确实成功了,但是,在程序退出时,DEBUG挂了。rnIPCTRL内部子<em>类化</em>rnvoid CIPAddrCtrlEx::PreSubclassWindow()rnrn CIPAddressCtrl::PreSubclassWindow();rn char szText[256] = 0; rn HWND hwndAfter = NULL; rn CEdit *pEdit = NULL;rn CWnd *pWnd = NULL;rn int n = 0;rn LONG ret = 0;rn while(hwndAfter = ::FindWindowEx(m_hWnd,hwndAfter,"Edit",NULL)) rn rn CEditEx *pEdit = new CEditEx;rn pEdit->SubclassWindow(hwndAfter);rn m_Edit[n] = pEdit;rn n++;rn rnrnrnrnvoid CIPAddrCtrlEx::OnDestroy() rnrn CIPAddressCtrl::OnDestroy();rn rn // TODO: Add your message handler code herernrn for (int i = 0;i < 4;i++)rn rn if(m_Edit[i])rn rn#ifndef _DEBUGrn if (m_Edit[i]->m_hWnd)rn rn m_Edit[i]->DestroyWindow();rn rn delete m_Edit[i];rn m_Edit[i] = NULL;rn#endifrn rn rnrnrn程序挂在 CEdit::DestroyWindow()ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);rnrn之前的话,也做个CListCtrl里面的HeadCtrl,都没<em>问题</em>,觉得很怪。rnrnCEdit* 换成 CEdit普通成员变量也没用.反正都是Destroy时挂的。rnrnrn希望大伙帮帮忙。
类化按钮的问题
hbutton2=CreateWindow(.....);rnold=(WNDPROC)SetWindowLong(hbutton1,GWL_WNDPROC,(LONG)MyButton);rnrnLRESULT CALLBACK MyButton(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)rnrn switch(msg)rn rn case WM_LBUTTONDOWN:rn MessageBox(hwnd,"你点击了我","子<em>类化</em>按钮单击通知",MB_OK);rn return 0;rn rn return CallWindowProc(old, hwnd, msg, wParam, lParam);rnrnrn为什么当我点击按钮时没有下压下去就弹出了那个消息框?
关于子类化问题 关于子类化问题
我有一个继承自CMDIFrameWnd的MDI1的主窗口类. rn我在MDI1上继承了MDI2. rn在MDI1中有一个Crebar m_rebar.对象. rn我想改变MDI2中m_rebar的显示效果.想用子<em>类化</em>SubclassWindow方法. rn我在Crebar 上继承了Crebar1类. rnint MDI1::OnCreate(LPCREATESTRUCT lpCreateStruct) rn rnif (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) rnreturn -1; rn m_ReBar.Create(this,0,WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN |CBRS_TOP);//建立ReBar. rn .... rn rnint MDI2::OnCreate(LPCREATESTRUCT lpCreateStruct) rn rnif (MDI1::OnCreate(lpCreateStruct) == -1) rnreturn -1; rn... rn m_OmsRebar.SubclassWindow(m_ReBar.m_hWnd); //出错 rn... rn rnrn请问应该如何使用 SubclassWindow 方法
关于dialog中控件类化问题
我用dialog editor编了一个dialogrn但用的时候,其中一个<em>控件</em>,我想用我自己写的类来子<em>类化</em>一下rn如它的一个Button,我想用CMyButton:public CButton来子<em>类化</em>rn我建了一个CMyBuuton m_mybuttonrn然后用m_mybutton.SubclassDlg(IDC_BUTTON,this)来子<em>类化</em>rn但由于CMyButton新加入了几个成员变量,在IDC_BUTTON的类CButton不存在这样一个成员变量,使用CMyButton的函数时,导致内存出错rn有什么好的解决办法吗?
请教:一个关于控件类化问题
我对<em>控件</em>CListBox作了子<em>类化</em>,加了一些特殊的效果,新的类为CListBoxEx。但是我的这个<em>控件</em>是动态创建的,创建过程如下:rnrnCListBoxEx m_ListBoxEx;rnrnRECT rect;rnrect.top=40;rnrect.left=80;rnrect.right=200;rnrect.bottom=180;rnrnm_ListBoxEx.CreateEx( 0,"ListBox","",WS_POPUP|WS_BORDER|WS_VISIBLE,40,80,200,180, HWND_DESKTOP,NULL )rnrn现在的<em>问题</em>是,<em>控件</em>倒是动态创建成功了,但创建的是原始的ListBox<em>控件</em>,而不是我子<em>类化</em>后的<em>控件</em>(我增加的特殊效果没有了)。我要创建的是子<em>类化</em>后的<em>控件</em>,应该怎么办?
类化以后,控件消失问题
对一个按钮进行子<em>类化</em>:CMyButton 继承于CButton,在对话框类的初始化函数OnInitDialog()中rnrnCMyButton btn;rnBOOL bResult =btn.SubclassDlgItem(IDC_BUTTON00,this);rnif(!bResult) rn MessageBox(_T("SubclassDlgItem Error!")); rnrn可执行后发现按钮消失不见了,想问各位大大这是什么原因造成的?
关于动态创建控件类化失败的问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rn貌似这个<em>问题</em>有点难度,CSDN 里面搜了一圈没找到答案rnrn我在一个基于 CView 的 SDI 程序当中的视图类里面动态创建了一个 CStatic <em>控件</em>, 随后利用 SubClassWindow 函数子<em>类化</em>这个<em>控件</em>:rnrnm_MapManage.SubWlassWindow(m_Static.GetSafeHwnd());rnrnm_MapManage 为子<em>类化</em><em>控件</em>的派生类对象,m_Static 为动态创建的 CStatic 类对象.rnrn结果总是运行至 SubClassWindow 失败,追进去发现Attach(hWnd)失败,再追发现ASSERT(FromHandlePermanent(hWndNew) == NULL);失败 rnrn这就搞不懂了,为什么会这样呢?有没有解决办法?rnrn以前好像依稀记得什么地方看过,说是动态创建的窗口不可以进行子<em>类化</em>,真是这样吗?rnrn感谢各位!rnrnrn
类化CTreeView中的CTreeCtrl控件问题
我按照下面贴子的方法,子<em>类化</em>单文档视图中CTreeView中的CTreeCtrl,结果运行时出错。rnhttp://blog.csdn.net/lemonxiao0/article/details/8435401
关于:子类化和超类化
大家好:rn 小弟我是一名初学者,看完了书中的《子<em>类化</em>和超<em>类化</em>》这一节后,对这两个概念的理解还是不够详细,想请都各位高手,帮我解释一下,介绍一下这方面的资料,最好有例子,谢谢了!
类化类化 技术分析
分析子<em>类化</em>技术 超<em>类化</em>技术 MFC中对这两个技术的实现
请教关于动态创建控件和子类化问题
rn看了一个帖子 http://bbs.csdn.net/topics/320001582rnrn好象动态创建的<em>控件</em>不能子<em>类化</em>,也就是不能用subclasswindow和subclassDlgItem来子<em>类化</em>rnrn我想问一下,啥是动态创建?rnrn1 m_word2=new CVxxEdit;rn m_word2->Create( "button",WS_CHILD| WS_VISIBLE|WS_BORDER |ES_CENTER,test,this,127);rnrn这个是动态创建,我知道,但是下面这个是不是动态创建?rnrn在CKuView类添加一CButton的成员变量m_buttonrn在CKuView类的WM_CREATE中调用rnm_button.Create("TEST",WS_VISIBLE|BS_PUSHBUTTON,T,this,3000);rnrn======================rnrn是不是调用Create函数来创建<em>控件</em>的都是动态创建?rnrn其实我是想问,m_button.Create()创建的按钮还能用subclasswindow和subclassDlgItem来子<em>类化</em>吗?rnrnrnrn
请教一个关于子类化控件问题
我对CStatic进行了子<em>类化</em>,其中处理了以下几个事件rnOnPaint();rnOnEraseBkgnd(CDC* pDC);rnOnMouseMove(UINT nFlags, CPoint point);rnrn其中rnvoid PreSubclassWindow()rnrn DWORD dwStyle = GetStyle();rn ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);rn CStatic::PreSubclassWindow();rnrnrn我将<em>控件</em>放到一个CScrollView中的时候,显示可以显示,可是当CScrollView那个Frame改变的时候,<em>控件</em>就看不到了,而如果是原来的CStatic的话就正常,原本拉动滚动条的时候就没了,我在OnEraseBkgnd()中加了Invalidate()就可以了,不知道我还有哪些消息要处理,请各位大侠指点一下。rnrn
类化控件窗口出错的问题
我写一个<em>控件</em>,由于vb没有提供对鼠标滚轮事件的支持,所以要子<em>类化</em>窗口处理滚轮消息,现在能处理到滚轮消息,我已在关闭<em>控件</em>前恢复了窗口的处理函数,但关闭<em>控件</em>后就会出错。rnrn在exe中就正常。
CFileDialog中的控件类化问题
windows标准文件对话框CFiledialog,对其中的<em>控件</em>进行子<em>类化</em>,其中syslistview32(就是显示选定文件夹中所有文件的那个大窗口)和“打开”按钮,但其ID都是1,如果用subclassdlgitem进行子<em>类化</em>时,该如何区分呢?rnsubclassdlgitem函数用法如下:BOOL SubclassDlgItem( UINT nID, CWnd* pParent ),只有ID能区分了rn
请教一个控件类化问题
我对对话框的<em>控件</em>IDC_MINE进行子<em>类化</em>,使其响应鼠标右键消息,但在远行时,整个对话框都响应,不知为什么?
一个简单的子类化问题
各位大虾:小弟用以下的代码怎么好象不行啊?怎么回事?rnWNDPROC WndProc=NULL;rnHWND hBegin;rnLRESULT CALLBACK MyApp(HWND ,UINT,WPARAM,LPARAM);rn//---------------------------------------------------------------------------rnrnLRESULT CALLBACK MyApp(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)rnrnrn //WndProc=(WNDPROC)GetWindowLong(hBegin,GWL_WNDPROC);rnrn switch(message)rn rn case WM_LBUTTONDOWN:rn ShowMessage("haha");rn break;rnrn case WM_RBUTTONDOWN:rn ShowMessage("heihei");rn break;rn default:rn return DefWindowProc(hwnd,message,wParam,lParam);//1处rn // return CallWindowProc(WndProc,hwnd,message,wParam,lParam);//2处。rnrn rnrn return 0;rnrnrnvoid __fastcall TForm1::Button1Click(TObject *Sender)rnrn // HWND hTool=FindWindow("Shell_TrayWnd",0);rn // HWND hBegin=GetWindow(hTool,GW_CHILD);rnrn hBegin=FindWindow(NULL,"qwe");rn ::WndProc=(WNDPROC)SetWindowLong(唊tton2->Handle,GWL_WNDPROC,(LONG)MyApp);rnrn SetWindowPos(hBegin,HWND_TOP,50,50,50,22,SWP_ASYNCWINDOWPOS|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED);rnrnrn其实也就是想设置别的进程的消息处理函数。但因为属不同进程。所以要用SETWINDOWPOS。不知这样用对不对。而且在1处我用2替代也不行。(编译出错。rn说类型不匹配)。rn谢谢?位大虾的指点。
C# TextBox子类化问题
大家好,我自己写一个TEXTBOX的子类,即public class TextBoxEx : System.Windows.Forms.TextBoxrn我主要是在获得这TEXTBOX后,文本框变大变长,然后变底色。这个都做到了。关键是以下:rn1、我的TextBoxEx是动态绑定到数据库的,每次新建一个记录,TextBoxEx上原来的数据不象TextBox一样自动清除。不知道大家有什么好办法,指点一下。rn2、程序在翻页的时候儿,同上面一样,数据不会自动更新,而TextBox就可以。rnrn谢谢大家,如果没有办法,只好用老办法,用委托了。
VB关于子类化问题
我使用子<em>类化</em>,进行动态生成菜单rn现在的<em>问题</em>是这样的:rn1.我在调试的时候,出现我动态生成的菜单,并且是正常的rn 而我编译后,我动态生成的菜单就不出现了rn2.我使用系统默认的生成部分菜单方法的话rn 调试的时候,动态生成的菜单和系统生成的菜单是一起出现的rn 但是编译后,就只有系统生成的菜单出现,而我动态生成的菜单就无法显示rn我要问的<em>问题</em>是:rn 这个<em>问题</em>是什么产生的,要什么解决。rn 是否需要我重绘菜单[顶级菜单,我直接给默认处理函数了,只有弹出菜单,我才进行重绘],就能解决这个<em>问题</em>
求助: 关于子类化问题
我想将一个自己派生的listctrl类封装成ActiveX<em>控件</em>,类是现成的,rn我在创建MFC ActiveX<em>控件</em>工程的第二步选择的是从syslistview32,rn我怎么将<em>控件</em>子<em>类化</em>成我重载的listview类?我用SubclassDlgItem不行,SubclassWindow也报错,rn自动生成的程序:rnBOOL CTestCtrl::PreCreateWindow(CREATESTRUCT& cs)rnrn cs.lpszClass = _T("SysListView32");rn cs.style |=LVS_REPORT;rn return COleControl::PreCreateWindow(cs);rnrnrn我怎么将SysListView32类型替换成我的CMyListCtrl呢?[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/16.gif][/img]
QT 子类化 QThread的问题
QT5.8开发,做个简单的Samle,各种百度,然后子<em>类化</em>rnrn在QT5.8中添加新的C++类,无奈Base Class中没有QThread,只好手手动输入rn[code=c]rn#ifndef WORKERTHREAD_Hrn#define WORKERTHREAD_Hrnrn#include rnrnclass WorkerThread : public QThreadrnrn Q_OBJECTrnpublic:rn explicit WorkerThread(QObject *parent = 0):QThread(parent)rnrn virtual void run() Q_DECL_OVERRIDErn QString result;rn result = "run";rn emit resultReady(result);rn rn signals:rn void resultReady(const QString &);rn;rnrn#endif // WORKERTHREAD_Hrn[/code]rnrnrn下面是调用部分rn[code=c]rnvoid MainWindow::on_pushButton_2_clicked()rnrn WorkerThread *workerThread = new WorkerThread(this);rn connect(workerThread, &WorkerThread::resultReady, this, &MainWindow::handleResults);rn connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);rn workerThread->start();rnrnrn[/code]rnrn编译时mainwindow.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl WorkerThread::metaObject(void)const " (?metaObject@WorkerThread@@UEBAPEBUQMetaObject@@XZ)rnmainwindow.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual void * __cdecl WorkerThread::qt_metacast(char const *)" (?qt_metacast@WorkerThread@@UEAAPEAXPEBD@Z)rnmainwindow.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual int __cdecl WorkerThread::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@WorkerThread@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)rnmainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: void __cdecl WorkerThread::resultReady(class QString const &)" (?resultReady@WorkerThread@@QEAAXAEBVQString@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_pushButton_2_clicked(void)" (?on_pushButton_2_clicked@MainWindow@@AEAAXXZ) 中被引用rnmainwindow.obj:-1: error: LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const WorkerThread::staticMetaObject" (?staticMetaObject@WorkerThread@@2UQMetaObject@@B)rnrn继续各种百度,据悉不是从QT界面中Base Class中选择的,手动继承的,要使用 signal、 slot的,必须手动调用moc,完成moc_workerthread.cpp的生成。rn无奈照做,还是不好使。rnrn<em>问题</em>1:请问该怎么做?rn<em>问题</em>2:QT是不是真的这么麻烦,还是我没找到方法?rnrn请注意我使用的是QT Creator4.2.1,不是vs。rnrn谢谢,请指教。
【求助】子类化消息问题
比如我们子<em>类化</em>了一个按钮,本来按钮消息是在WM_COMMAND处理,有BN_CLICKED,BN_***什么的,rn我们子<em>类化</em>后,在子<em>类化</em>过程里消息是不是还是BN_CLICKED,BN_***什么的,还是变成WM_***之类的,rn那到底这两者怎么对应
消息,钩子,子类化问题
小弟正在看这方面的东西,有几个<em>问题</em>不大明白rn1 屏蔽消息:我想了2种方法,一种是用钩子,当钩子截取到指定消息后将其丢弃;另一种是子<em>类化</em>在rn 新的窗口过程中对指定消息不做处理;不知道这两种方法是否可行?如果第一种方法可rn 行的话,用什么语句实现?rn2 子<em>类化</em>: 有一点不明白,既然定义了新的窗口过程,那么新的窗口过程中为什么一定要调用旧的rn 口过程?rn3 消息中的时间如何转化成我们生活中的24小时制,消息常量值如何转变成字符串,就象spy++那样,例如将$0102转变成WM_CHAR,其实我目的是想做个日志分析一下,如果是常量值的话不大好理解。rn
什么时候需要用SubClassDlgItem来子类化控件
RT,在程序中有时候会看到SubClassDlgItem来子<em>类化</em><em>控件</em>后来改变<em>控件</em>的属性,但有时间又不需要用这个函数,直接进行设置即可。到底什么时候需要用SubClassDlgItem来子<em>类化</em>,子<em>类化</em>的用处是什么?
请教vcl控件类化怎么弄的?
无hwnd的<em>控件</em>也可以吗?
请问控件类化是什么意思?
我是一只莱莱莱莱鸟,但我想飞得高
类化subclass以及控件重绘的例子
子<em>类化</em>subclass以及<em>控件</em>重绘的例子,非常好的学习素材 包含两个例子: 1、按钮重绘 2、<em>控件</em>子<em>类化</em>
mfc_子类化+双缓冲
mfc子<em>类化</em>+双缓冲,解决图形刷新的闪烁<em>问题</em>
类化是不是继承
对于subclass、superclass以及继承分不清楚,子<em>类化</em>是继承的一种运用方式,还是说子<em>类化</em>和继承完全无关,谢谢
关于子类化窗口
我在对话框中将一按扭子<em>类化</em>,运行后该按扭隐藏了,用ShowWindow也不能将其显示出来。请问这是为什么?有什么办法可以把它显示出来吗?
sdk listbox 子类化
直接上代码rn[code=C/C++]rnvoid SongList::Create(HWND &hwnd, DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle,rn int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)rnrn hwnd = CreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStylern , X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);rn OldProc = (WNDPROC)::SetWindowLong(hwnd, GWL_WNDPROC, (LONG)ListBoxProc);rnrnrn。。。。。。。。。。rnrnLRESULT SongList::ListBoxProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)rnrn switch(uMsg) rn rn case WM_LBUTTONDOWN:rn MessageBox(NULL, "0", "1", NULL);rn break;rn default: rn return CallWindowProc(OldProc,hwnd,uMsg,wParam,lParam); rn break; rn rn return 1;rnrnrn[/code]rnrn错误:类型转换<em>问题</em>。rnerror C2440: 'type cast' : cannot convert from 'long (__thiscall SongList::*)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long'rn Conversion is a valid standard conversion, which can be performed implicitly or by use of static_cast, C-style cast or function-style castrnrn怎么整,谢谢。
关于Listbox的子类化
在msdn中有一个edit<em>控件</em>的子<em>类化</em>例子(IME),子<em>类化</em>后可以根据输入法的内码不同rn来显示不同内码的文字,比如中文,韩文,从而不出现乱码,在子<em>类化</em>中重写了Edit的OnPaintrn方法,那么ListBox如果实现此种功能需要怎么子<em>类化</em>?
控件类化后显示不正常
我打算将编辑框<em>控件</em>子<em>类化</em>,单独处理键盘按下的消息,但是并不处理编辑框的其他消息处理函数,包括它自身的绘制(我将父窗口的clip children设为TRUE),然而显示不正常,希望各位指教,效果图如下rn[img=https://img-bbs.csdn.net/upload/201507/04/1436006022_83686.png][/img]rnrn源码如下,为了测试按键消息,添加了MessageBox()rn[code=c]rn#include rn#include "resource.h"rnrnHINSTANCE hInst;rnWNDPROC EditProc = NULL;rnrnrnINT_PTR CALLBACK EditProc1(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);rnINT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lparam);rnint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmd, int iShowCmd)rnrn hInst = hInstance;rn DialogBoxParam(hInstance, L"MainFrame", NULL,DialogProc, NULL);rnrn return 0;rnrnrnINT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lparam)rnrn int iCtrlID = 0;rn HICON hIcon;rn rn rn switch(uMsg)rn rn case WM_CLOSE:rn EndDialog(hWnd, TRUE);rn return TRUE;rn rn case WM_INITDIALOG:rn hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_DOTA2));rn SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);rnrn //子<em>类化</em>编辑框<em>控件</em>, 截获按键消息rn EditProc = (WNDPROC)GetWindowLong(GetDlgItem(hWnd, iCtrlID), GWL_WNDPROC);rn for (iCtrlID = IDE_TOOL7; iCtrlID , MB_OK);rn break;rnrn default:rn return CallWindowProc(EditProc,hWnd, uMsg, wParam, lParam);rn rn return 0;rnrn[/code]
类化控件怎么收不到消息
[code=C/C++]class CMyComboBox : public CComboBoxrnrnpublic:rn afx_msg void OnKeyDown(UINT nChar,UINT nRepcnt,UINT nFlags);rn DECLARE_MESSAGE_MAP()rn;rnBEGIN_MESSAGE_MAP(CMyComboBox,CComboBox)rn ON_CBN_EDITCHANGE(IDC_COMBO1,Change)rn ON_WM_KEYDOWN()rnEND_MESSAGE_MAP()rnrnvoid CMyComboBox::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)rnrn CComboBox::OnKeyDown (nChar,nRepCnt,nFlags);rn ::MessageBox (0,0,0,0);//没反应rn[/code]
类化函数
在qq的聊天窗口,当按下"发送"按钮之前,执行一段我的代码 rn希望能用全局消息钩子加子<em>类化</em>函数实现 rnWH_CALLWNDPROC setwindowslong rn因为,用全局钩子消息,我已会 rnrn我在学子<em>类化</em>函数的用法? rnrnlibrary TmHook; rnrnuses rn SysUtils, rn Classes, rn Windows, rn Messages, rn CommCtrl; rnvar rn hhook: Windows.HHOOK; rn hwndListView: HWND; rn na:array[0..300] of char; rn oldWndProc: Integer; rn$R *.res rnfunction WindowProc(hwnd: HWND; msg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; rn begin rn case Msg of rn WM_LBUTTONDOWN: rn MessageBox(hwndListView,'你好!','提示',MB_OK); rn end; rn Result := CallWindowProc(TFNWndProc(oldWndProc), hwnd, msg, wp, lp); rnend; rnfunction TmHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): Integer; stdcall; rnvar rn cwp: PCwpStruct; rn m:TPoint; rnbegin rn Result := 0; rn if (nCode < 0) then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn cwp := PCwpStruct(lParam); rn if cwp^.message <> WM_COMMAND then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn GetCursorPos(m); rn GetWindowText(WindowFromPoint(m),na,299); rn if lstrcmpi('发送(S)',na) <>0 then rn begin rn Result := CallNextHookEx(hhook, nCode, wParam, lParam); rn exit; rn end; rn hwndListView:=WindowFromPoint(m); rn oldWndProc := SetWindowLong(hwndListView, GWL_WNDPROC, Integer(@WindowProc)); rn end; rnprocedure Hook(bEnable: Boolean); stdcall; export; rnbegin rn if bEnable then rn begin rn if hhook = 0 then rn begin rn hhook := SetWindowsHookEx(WH_CALLWNDPROC, TmHookProc, HInstance, 0); rn end; rn end rn else rn begin rn if hhook <> 0 then rn begin rn UnhookWindowsHookEx(hhook); rn hhook := 0; rn end; rn end; rnend; rnexports rn Hook; rnbegin rn hhook := 0; rn hwndListView := 0; rn oldWndProc:=0; rnend. rn到底哪里错了,一运行,qq就自动关闭?? rn rn rn rn
派生和子类化
派生一个类和子<em>类化</em>一个类有什么区别吗,各位大侠们指点一下哦.
CEdit子类化
我从CEdit派生一个新的CMyEdit,OnChar设一个定时器,然后在OnTimer里面读出编辑框里面的内容。我想把读出的内容str显示到一个ListCtrl<em>控件</em>(<em>控件</em>变量m_ListCtrl)中,请问大家该怎样写呢?rnrn我下面程序里写的m_ListCtrl.InsertItem()是错误的:'m_ListCtrl' : undeclared identifier.rnrn谢谢大家!rnrn// CMyEdit message handlersrnvoid CMyEdit::OnTimer(UINT_PTR nIDEvent)rnrn // TODO: Add your message handler code here and/or call defaultrn CString str;rn int count = 0;rn KillTimer(1);rn if(nIDEvent == 1)rn rn GetWindowText(str); //读出编辑框内容rn SetWindowText(_T("")); //清空编辑框rn MessageBox((LPCTSTR)(str)); //消息框可以显示rnrn //m_ListCtrl.InsertItem(count++, (LPCTSTR)(str)); 错误的rn rn CEdit::OnTimer(nIDEvent);rnrnrnvoid CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)rnrn // TODO: Add your message handler code here and/or call defaultrn SetTimer(1, 1000, NULL);rn CEdit::OnChar(nChar, nRepCnt, nFlags);rn
VC 子类化
为了屏蔽掉鼠标的一些消息,我需要将一个ListCtrl<em>控件</em>子<em>类化</em>。但是为了自绘这个<em>控件</em>,我自写了一个派生于CListCtrl的类,并让为<em>控件</em>关联一个这个派生类的对象。rn<em>问题</em>:1、如果<em>控件</em>关联的是CListCtrl类对象,实现起来就没<em>问题</em>,但关联的是CListCtrl的派生类的对象时执行起来就奔溃了,请问要怎么实现?rn 2、除了子<em>类化</em>可以屏蔽掉消息外,还有其它什么办法吗?
关于窗体子类化
因为程序需要,我用WORD的VBA中插入了一个用户窗体USERFORM1,并且将该窗体子<em>类化</em>了。rnrn但是程序运行后,窗体的标题栏似乎是一个“禁区”,无论在标题栏鼠标左击、右击,或者左击窗体右上角的关闭按钮,都会导致程序停止响应,包括WORD,我实在就迷茫了,不知道为什么,怎么解决?rnrn跪求各位大神不吝赐教啊~!!~!rnrnrn相关代码如下:rn'在USERFORM1中rnPrivate Sub UserForm_Click()rnUnload UserForm1rnEnd SubrnrnPrivate Sub UserForm_Initialize()rn FrmHwnd = FindWindow(vbNullString, UserForm1.Caption)rn lpPrevWndProc = SetWindowLong(FrmHwnd, GWL_WNDPROC, AddressOf WindowProcTest)rnrnEnd SubrnrnPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)rn SetWindowLong FrmHwnd, GWL_WNDPROC, lpPrevWndProcrnEnd Subrnrn'在模块中rnPublic Const GWL_WNDPROC = -4rnrnPublic lpPrevWndProc As LongrnrnPublic FrmHwnd As LongrnrnPublic Declare Function SetWindowLong _rn Lib "user32" _rn Alias "SetWindowLongA" (ByVal hwnd As Long, _rn ByVal nIndex As Long, _rn ByVal dwNewLong As Long) As LongrnPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongrnrnPublic Declare Function CallWindowProc _rn Lib "user32" _rn Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _rn ByVal hwnd As Long, _rn ByVal Msg As Long, _rn ByVal wParam As Long, _rn ByVal lParam As Long) As LongrnPublic Function WindowProcTest(ByVal hwnd As Long, _rn ByVal uMsg As Long, _rn ByVal wParam As Long, _rn ByVal lParam As Long) As Longrnrnrn WindowProcTest = CallWindowProc(lpPrevWndProc, hwnd, uMsg, wParam, lParam)rnrnEnd Functionrn
类化类化 全局子类
子<em>类化</em> 超<em>类化</em> 全局子类 学习C++过程中的几个练习
类化的static控件响应鼠标拖动消息
有一静态<em>控件</em>,已子<em>类化</em>,继承自CStatic,希望鼠标拖动的时候这个<em>控件</em>跟随一起拖动,rn现在做出来不能跟随鼠标移动,每拖一次<em>控件</em>都变小一点,调试的时候看到拖动正常,直接运行就不对了,rn<em>控件</em>总是跟不上鼠标。<em>控件</em>移动加上UpdateWindow()的时候发现每次都往原来的地方移回去。rn调试的时候发现每次都先来OnMouseMove消息,rn想不通哪里出了<em>问题</em>,请各位指教,本人分不多,请不要介意rnrn[code=c]void CStaticVideo::OnLButtonDown(UINT nFlags, CPoint point) rnrn // TODO: Add your message handler code here and/or call defaultrn //获取当前<em>控件</em>大小rn GetClientRect(&m_rect);rnrn if (PtInRect(&m_rect, point))rn rn ClientToScreen(&m_rect);rn //窗口坐标转换成屏幕坐标rn ClientToScreen(&point);rnrn m_bMouseDown = TRUE; rn m_NewPt = point;rnrn SetCapture();rn rn rn CStatic::OnLButtonDown(nFlags, point);rn[/code]rnrnrn[code=c]void CStaticVideo::OnMouseMove(UINT nFlags, CPoint point) rnrn // TODO: Add your message handler code here and/or call defaultrn CPoint OldPt;rn SIZE SubSize = 0;rn rnrn if ((CPoint(0) != m_NewPt) && (m_NewPt != point) && (MK_LBUTTON == nFlags))rn rn //窗口坐标转换成屏幕坐标rn ClientToScreen(&point);rn OldPt = m_NewPt;rn m_NewPt = point;rnrn SubSize.cx = m_NewPt.x - OldPt.x;rn SubSize.cy = m_NewPt.y - OldPt.y;rnrn CRect rect(m_rect);rn rect.OffsetRect(SubSize);rnrn ScreenToClient(&rect);rn MoveWindow(rect);rn //GetParent()->GetDlgItem(IDC_STATIC_BOARD)->UpdateWindow();rn rnrn CStatic::OnMouseMove(nFlags, point);rn[/code]rnrn[code=c]void CStaticVideo::OnLButtonUp(UINT nFlags, CPoint point) rnrn // TODO: Add your message handler code here and/or call defaultrn CPoint OldPt;rnrn if (TRUE == m_bMouseDown)rn rn m_bMouseDown = FALSE;rnrn ReleaseCapture();rn rn rn CStatic::OnLButtonUp(nFlags, point);rn[/code]
类化CListView中的CListCtrl控件,出错?
我在CListView中用另一个CListCtrl对CListView中的那个List<em>控件</em>执行SubClassWindow,但运行到这句就出错,是什么原因
类化例子
win7 vs2010 低于此版本不能运行,说明了子<em>类化</em>使用的例子,配合我的博客理解子<em>类化</em>的原理
checkbox子类化
基于VS2013 MFC 子<em>类化</em>checkbox实现点击打钩框的自定义背景图美化
类化edit
我的对话框有几个编辑框由于计算我已经定义了float型变量。我要使编辑框只能输入数字,就采用子<em>类化</em>edit,新的类为CSuperEdit。关联变量时我又定义了变量,为CSuperEdit型(变量名不同)程序没错误,但是运行程序是对话框就不弹出来。这是为什么?
去子类化出现异常
我用的是subclass这个类,子<em>类化</em>一个<em>控件</em>(SetWindowlong设置新的窗口过程,保存<em>控件</em>的m_hWnd),之后在[color=#FF0000]中间时间[/color]又恢复这个<em>控件</em>的原始窗口过程(设回去,把子<em>类化</em>销毁掉),关闭时发现提示ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);,而且不再调用ONNCDestory(),如果是在<em>控件</em>销毁时做同样的操作,不会有任何<em>问题</em>,求原因和解决方法。
类化对话框
我遇到一个难题,我们软件的安装包是用MSI进行制作的,上头要求给MSI生成的Setup.exe加上我们购买的皮肤,也就是Xtreme了。 经过一些办法,现在皮肤加上了。 但仍然有个<em>问题</em>尚未解决, 就是某个安装界面上有三个"Radio button"。这个Radio button的背景色还是灰色的。于大背景色白色不匹配。 然而MSI的代码都是XML形式的,也没有设定radio button背景色的语法(确实没有)。 现在<em>问题</em>描述清楚了,请问各位大大,此<em>问题</em>如何解决?rnrn当然我们这个MSI是包在一个MFC的EXE里运行的,否则无法加载皮肤的。 那么我就想到了是否能把那个含有Radio button的页面子<em>类化</em>? 然后在响应CTRLcolor的消息进行设置和规划。 但又不知如何将一个对话框子<em>类化</em>为自己的对话框类?rnrn或者说我们能不能将别人程序中的某个对话框子<em>类化</em>?rnrn请高手释疑 谢过
什么事子类化
怎么做到,说的详细点,最好给个例子
何谓“子类化”SubDlgItem?
何谓“子<em>类化</em>”SubDlgItem?
类化CHeaderCtrl出错
代码:rn//class CSkinHeaderCtrl : public CHeaderCtrlrn//class CSkinListCtrl : public CListCtrlrnvoid CSkinListCtrl::PreSubclassWindow()rn rn CListCtrl::PreSubclassWindow();rnrn VERIFY( m_SkinHeaderCtrl.SubclassWindow( GetHeaderCtrl()->GetSafeHwnd() ) );rnrnrn编译通过,运行VERIFY语句至跳转至下列代码时出错,是什么原因?rnBOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine)rnrn..............rn BOOL bResult = _CrtDbgReport(_CRT_ASSERT, lpszFileName, nLine, NULL, NULL);rn...............rnrnrn
vfp 子类化 textbox
简单示例,vfp 如何子<em>类化</em>文本框<em>控件</em>,绑定各种类型数据后,不允许输入留空
基于J2ME的职称英语学习软件的研究与开发下载
这是一个基于J2ME的职称英语学习软件的研究与开发的论文,应为没有太多的时间整理,里面的格式不正确,希望需要的自己拿去整理 相关下载链接:[url=//download.csdn.net/download/angellee5200710/2401767?utm_source=bbsseo]//download.csdn.net/download/angellee5200710/2401767?utm_source=bbsseo[/url]
ccflow .net开源工作流part2下载
ccflow是完全开源的 .net工作流,代码完全开源 相关下载链接:[url=//download.csdn.net/download/nxt/5109706?utm_source=bbsseo]//download.csdn.net/download/nxt/5109706?utm_source=bbsseo[/url]
SQL_Server2005下载
SQL_Server2005基础教程,适合新手查看 相关下载链接:[url=//download.csdn.net/download/hatoly/5120457?utm_source=bbsseo]//download.csdn.net/download/hatoly/5120457?utm_source=bbsseo[/url]
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池
我们是很有底线的