首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 办公应用 > OFFICE教程 >

Word子类化——窗口重绘有关问题

2012-01-20 
Word子类化——窗口重绘问题我找到Word.exe窗口类名为“_WwG”的子窗口,得到其句柄为hWndTarget,该窗口为Word

Word子类化——窗口重绘问题
我找到Word.exe窗口类名为“_WwG”的子窗口,得到其句柄为hWndTarget,该窗口为Word的文档工作区域,并通过SetWindowLong(hWndTarget, GWL_WNDPROC, (LONG)SubWindowProc)进行子类化,然后捕获其WM_PAINT消息,进行重绘,可是没有效果:

C/C++ code
LRESULT SubWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ){    //lc(TEXT("Enter SubWindowProc()..."));    //lh(TEXT("SubWindowProc hWnd: "), hWnd);    extern LONG g_lpWndDefProc;    PAINTSTRUCT ps;    LRESULT lRes = 0;    RECT rect = {0};    switch(uMsg)    {    case WM_PAINT:        GetUpdateRect(hWnd, &rect, TRUE);                  //以下四句为调试信息        ln(L"left:", rect.left);        ln(L"top:",rect.top);        ln(L"right:",rect.right);        ln(L"bottom:",rect.bottom);        lRes = CallWindowProcW( (WNDPROC)g_lpWndDefProc, hWnd, uMsg, wParam, lParam);        BeginPaint( hWnd, &ps);                              PrintWindowWaterMark(hWnd, &rect);/*这里画一个窗口水印,没有效果,但是我对其他类型的窗口进行子类化的时候,水印能画出来。而且我调试中发现,这个函数确实是执行了的,也确实“画”成功了,但是没有在界面上显示出来。*/        return EndPaint( hWnd, &ps);            }    return CallWindowProc( (WNDPROC)g_lpWndDefProc, hWnd, uMsg, wParam, lParam);}


各位大侠帮我解释下。是不是有其他的后来的消息处理函数把我的水印覆盖了?那么是谁呢?
附:SetWindowLong不是跨进程去调用的,我已经成功把代码注入到Word.exe进程了的,所以请别这样解释了。同时我在其他的程序,如NotePad.exe,WordPad.exe, DllHost.exe,中实验过,水印均能准确画出,所以画水印的代码应该问题不大。

[解决办法]
哥,我又来接分了
[解决办法]
晕,自己接分啊。。
探讨
哥,我又来接分了

热点排行