标题:Win32SDK求助:GroupBox内部的按钮如何响应
取消只看楼主
Escapist
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2020-4-27
结帖率:75%
已结贴  问题点数:20 回复次数:3 
Win32SDK求助:GroupBox内部的按钮如何响应
我想用Win32SDK编写一款小工具,为了美观我加上了GroupBox(属于Button类),在里边创建了一些控件(控件父窗口参数填写的是GroupBox的句柄),包括几个按钮

在WndProc的WM_COMMAND中的消息处理中,我加入了判断这两个Button是否被点击并弹出MessageBox的代码,但是并没有反应。我尝试把按钮的父窗口改成主窗口的句柄,有反应,个人推测应该把判断的代码加到GroupBox的WndProc中(子类化),尝试了,但是仍然没有反应。

请问如何实现对GroupBox内部,或者其他的子窗口中的子窗口控件的响应?

我用来在WM_COMMAND判断按钮单机的代码模板:
程序代码:
    switch (Message)
    {
    case WM_COMMAND:
    {
        if (HIWORD(wParam) == BN_CLICKED)
        {
            switch (LOWORD(wParam))
            {

(在LOWORD(wParam)中的控件ID值是没有错的,这个本人检查了好几次)

我用来子类化的模板:
        OldWndProc = (WNDPROC)::GetWindowLongA(hGroupBox, GWL_WNDPROC);
        ::SetWindowLongA(hGroupBox, GWL_WNDPROC, (long)NewWndProc);

是否是代码出现了问题,还是实现的方法出现了问题?谢谢各位朋友和老师的教导~

[此贴子已经被作者于2020-10-25 14:07编辑过]

搜索更多相关主题的帖子: 代码 GroupBox 按钮 控件 内部 
2020-10-25 14:05
Escapist
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2020-4-27
得分:0 
回复 2楼 rjsp
那请问您的意思是PushButton不可以在GroupBox内部进行响应吗?只可以在主窗口的WndProc中响应?
2020-10-26 08:08
Escapist
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2020-4-27
得分:0 
回复 5楼 rjsp
程序代码:
long __stdcall NewWndProc(HWND WindowHandle, unsigned int Message, unsigned int wParam, long lParam)
{
    switch (Message)
    {
    case WM_COMMAND:
    {
        if (HIWORD(wParam) == BN_CLICKED)
        {
            switch (LOWORD(wParam))
            {
            case 101:
                ::MessageBoxA(NULL, NULL, NULL, NULL);
                break;
            }
        }
        break;
    }
    default:
        ::CallWindowProcA(OldWndProc, WindowHandle, Message, wParam, lParam);
        break;
    }
    return ::CallWindowProcA(OldWndProc, WindowHandle, Message, wParam, lParam);
}

这是我子类化的WndProc,和一开始的子类化窗口代码,没有实现,请问是有什么问题吗?
2020-10-26 08:30
Escapist
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2020-4-27
得分:0 
回复 5楼 rjsp
还有一个问题想问您,我在子类化一个窗口之后(就以这个GroupBox为例),发现这个GroupBox的样式发生了改变,对比图:

2020-10-26 11:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503623-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.756660 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved