VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 797|回复: 4

一个关于子类化的菜鸟问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-2 15:20:02 | 显示全部楼层 |阅读模式
我在自己的程序的window procedure里这样处理WM_CREATE消息:
case WM_CREATE:
     desktop = GetDesktopWindow();
     oldPROC = (WNDPROC)SetWindowLon(desktop,GWL_WNDPROC,(LONG)myProc);
     return 0;
然后myProc:
LRESULT CALLBACK myProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HDC hdc;
        switch(message)
        {
                case WM_KEYDOWN:
                        hdc = GetDC(hWnd);
                        RECT rt;
                        GetClientRect(hWnd, &rt);
                        DrawText(hdc,TEXT("HELLO"),5,&rt,DT_CENTER);
                        ReleaseDC(hWnd,hdc);
                        InvalidateRect(hWnd,NULL,TRUE);
                        return 0;
        }
        return CallWindowProc(WndProc,hWnd,message,wParam,lParam);
}
在我运行程序之后,在桌面是输入焦点的情况下,点击任何键都出不来"Hello",为什么?


还有我最近才刚开始学习win32的编程,在看windows programming,觉得WIN32 API函数太多太多,很多东西都是觉得一知半解,希望各位高手推荐些好的学习方法或者什么好书给我。。。
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-3 11:12:01 | 显示全部楼层
InvalidateRect(hWnd,NULL,TRUE);
去掉这句 试试
回复

使用道具 举报

0

主题

57

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-3 11:39:01 | 显示全部楼层
非自己进程的窗口估计没办法这么容易的子类化,尤其是在非9X下
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 10:27:02 | 显示全部楼层
为什么非自己的进程就不容易子类化了呢?
回复

使用道具 举报

0

主题

57

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-4 11:12:01 | 显示全部楼层
windows保护机制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表