⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdefbutt.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
        else {
            CheckDlgButton ( hDlg, IDB_BS_LEFT, 1);
        }

        if ( GETCTL_STYLE(o_info->info.c.info) & BS_NOTIFY ) {
            CheckDlgButton ( hDlg, IDB_BS_NOTIFY, 1);
        }
        if ( GETCTL_STYLE(o_info->info.c.info) & BS_PUSHLIKE ) {
            CheckDlgButton ( hDlg, IDB_BS_PUSHLIKE, 1);
        }
        if ( GETCTL_STYLE(o_info->info.c.info) & BS_LEFTTEXT ) {
            CheckDlgButton ( hDlg, IDB_BS_LEFTTEXT, 1);
        }
#else
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_NOTIFY), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_PUSHLIKE), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFTTEXT), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFT), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_RIGHT), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_CENTER), FALSE );

        if ( mask == BS_3STATE ) {
            CheckDlgButton ( hDlg, IDB_BS_3STATE, 1);
        } else if ( mask == BS_AUTOCHECKBOX ) {
            CheckDlgButton ( hDlg, IDB_BS_AUTOCHECKBOX, 1);
        } else if ( mask == BS_AUTO3STATE ) {
            CheckDlgButton ( hDlg, IDB_BS_3STATE, 1);
            CheckDlgButton ( hDlg, IDB_BS_AUTOCHECKBOX, 1);
        }
#endif
    } else if  ( id  == RBUTTON_OBJ ) {
        check_lefttext = TRUE;

#if __NT__XX
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_NOTIFY), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFTTEXT), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_PUSHLIKE), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_AUTORADIOBUTTON), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFT), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_RIGHT), TRUE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_CENTER), TRUE);

        mask = GETCTL_STYLE(o_info->info.c.info) & 0x0000000f;
        if ( mask == BS_AUTORADIOBUTTON ) {
            CheckDlgButton ( hDlg, IDB_BS_AUTORADIOBUTTON, 1);
        }

        // set new styles
        mask = GETCTL_STYLE(o_info->info.c.info) & 0x00000f00;
        if ( (mask & BS_CENTER) == BS_CENTER ) {
            CheckDlgButton ( hDlg, IDB_BS_CENTER, 1);
        }
        else if ( mask & BS_RIGHT ) {
            CheckDlgButton ( hDlg, IDB_BS_RIGHT, 1);
        }
        else {
            CheckDlgButton ( hDlg, IDB_BS_LEFT, 1);
        }

        if ( GETCTL_STYLE(o_info->info.c.info) & BS_NOTIFY ) {
            CheckDlgButton ( hDlg, IDB_BS_NOTIFY, 1);
        }
        if ( GETCTL_STYLE(o_info->info.c.info) & BS_LEFTTEXT ) {
            CheckDlgButton ( hDlg, IDB_BS_LEFTTEXT, 1);
        }
        if ( GETCTL_STYLE(o_info->info.c.info) & BS_PUSHLIKE ) {
            CheckDlgButton ( hDlg, IDB_BS_PUSHLIKE, 1);
        }
#else
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_NOTIFY), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFTTEXT), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_PUSHLIKE), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_AUTORADIOBUTTON), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFT), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_RIGHT), FALSE);
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_CENTER), FALSE);

        if ( mask == BS_AUTORADIOBUTTON ) {
            CheckDlgButton ( hDlg, IDB_BS_AUTORADIOBUTTON, 1);
        }
#endif
    } else if  ( id  == GBUTTON_OBJ ) {
#if __NT__XX
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFT), TRUE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_RIGHT), TRUE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_CENTER), TRUE );
        mask = GETCTL_STYLE(o_info->info.c.info) & 0x00000f00;
        if ( (mask & BS_CENTER) == BS_CENTER ) {
            CheckDlgButton ( hDlg, IDB_BS_CENTER, 1);
        }
        else if ( mask & BS_RIGHT ) {
            CheckDlgButton ( hDlg, IDB_BS_RIGHT, 1);
        }
        else {
            CheckDlgButton ( hDlg, IDB_BS_LEFT, 1);
        }
#else
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_LEFT), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_RIGHT), FALSE );
        EnableWindow ( GetDlgItem(hDlg, IDB_BS_CENTER), FALSE );
        if ( mask != BS_GROUPBOX ) {
            WdeWriteTrail("WdeButtonSetDefineInfo: Bad GroupBox mask!");
        }
#endif
    } else {
        WdeWriteTrail("WdeButtonSetDefineInfo: Bad OBJ_ID!");
    }

    if( check_lefttext ) {
       if( GETCTL_STYLE( o_info->info.c.info ) & BS_LEFTTEXT ) {
           CheckDlgButton ( hDlg, IDB_BS_LEFTTEXT, 1);
       }
    }

    // do the extended style stuff - its the same for PushButton,
    // RadioButton, CheckBox and GroupBox
    WdeEXSetDefineInfo ( o_info, hDlg );
}

void WdeButtonGetDefineInfo ( WdeDefineObjectInfo *o_info, HWND hDlg )
{
    BOOL        check_lefttext;
    BOOL        auto_checked;
    OBJ_ID      id;
    DialogStyle mask;

    id             = o_info->obj_id;
    mask           = 0;
    check_lefttext = FALSE;
    auto_checked   = FALSE;

    if ( id  == PBUTTON_OBJ ) {

#if __NT__XX
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_OWNERDRAW ) ) {
            mask = BS_OWNERDRAW;
        } else {
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_DEFPUSHBUTTON ) ) {
                mask = BS_DEFPUSHBUTTON;
            } else if ( IsDlgButtonChecked ( hDlg, IDB_BS_PUSHBUTTON ) ) {
                mask = BS_PUSHBUTTON;
            } else {
                WdeWriteTrail("WdeButtonGetDefineInfo: Bad Push style!");
                return;
            }

            // check for new styles that may be set
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_BITMAP ) ) {
                mask |= BS_BITMAP;
            }
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_ICON ) ) {
                mask |= BS_ICON;
            }
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_TEXT ) ) {
                mask |= BS_TEXT;
            }
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_MULTILINE ) ) {
                mask |= BS_MULTILINE;
            }
            if ( IsDlgButtonChecked ( hDlg, IDB_BS_NOTIFY ) ) {
                mask |= BS_NOTIFY;
            }

            if ( IsDlgButtonChecked ( hDlg,IDB_BS_TOP ) ) {
                mask |= BS_TOP;
            } else if ( IsDlgButtonChecked ( hDlg,IDB_BS_BOTTOM ) ) {
                mask |= BS_BOTTOM;
            } else {
                mask |= BS_VCENTER;
            }

            if ( IsDlgButtonChecked ( hDlg,IDB_BS_RIGHT ) ) {
                mask |= BS_RIGHT;
            } else if ( IsDlgButtonChecked ( hDlg,IDB_BS_LEFT ) ) {
                mask |= BS_LEFT;
            } else {
                mask |= BS_CENTER;
            }
        }
#else
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_PUSHBUTTON ) ) {
            mask = BS_PUSHBUTTON;
        } else if ( IsDlgButtonChecked ( hDlg, IDB_BS_DEFPUSHBUTTON ) ) {
            mask = BS_DEFPUSHBUTTON;
        } else if ( IsDlgButtonChecked ( hDlg, IDB_BS_OWNERDRAW ) ) {
            mask = BS_OWNERDRAW;
        } else {
            WdeWriteTrail("WdeButtonGetDefineInfo: Bad Push style!");
            return;
        }
#endif

    } else if ( id  == CBUTTON_OBJ ) {

        check_lefttext = TRUE;

        auto_checked = IsDlgButtonChecked ( hDlg, IDB_BS_AUTOCHECKBOX );

        if ( IsDlgButtonChecked ( hDlg, IDB_BS_3STATE ) ) {
            if ( auto_checked ) {
                mask = BS_AUTO3STATE;
            } else {
                mask = BS_3STATE;
            }
        } else {
            if ( auto_checked ) {
                mask = BS_AUTOCHECKBOX;
            } else {
                mask = BS_CHECKBOX;
            }
        }
#if __NT__XX
        // set the new styles
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_NOTIFY ) ) {
            mask |= BS_NOTIFY;
        }
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_PUSHLIKE ) ) {
            mask |= BS_PUSHLIKE;
        }
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_LEFTTEXT ) ) {
            mask |= BS_LEFTTEXT;
        }

        if ( IsDlgButtonChecked ( hDlg,IDB_BS_RIGHT ) ) {
            mask |= BS_RIGHT;
        } else if ( IsDlgButtonChecked ( hDlg,IDB_BS_CENTER ) ) {
            mask |= BS_CENTER;
        } else {
            mask |= BS_LEFT;
        }
#endif

    } else if  ( id  == RBUTTON_OBJ ) {

        check_lefttext = TRUE;

        auto_checked = IsDlgButtonChecked ( hDlg, IDB_BS_AUTORADIOBUTTON );

        if ( auto_checked ) {
            mask = BS_AUTORADIOBUTTON;
        } else {
            mask = BS_RADIOBUTTON;
        }
#if __NT__XX
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_NOTIFY ) ) {
            mask |= BS_NOTIFY;
        }
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_PUSHLIKE ) ) {
            mask |= BS_PUSHLIKE;
        }
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_LEFTTEXT ) ) {
            mask |= BS_LEFTTEXT;
        }

        if ( IsDlgButtonChecked ( hDlg,IDB_BS_RIGHT ) ) {
            mask |= BS_RIGHT;
        } else if ( IsDlgButtonChecked ( hDlg,IDB_BS_CENTER ) ) {
            mask |= BS_CENTER;
        } else {
            mask |= BS_LEFT;
        }
#endif

    } else if  ( id  == GBUTTON_OBJ ) {

        mask = BS_GROUPBOX;

#if __NT__XX
        if ( IsDlgButtonChecked ( hDlg,IDB_BS_RIGHT ) ) {
            mask |= BS_RIGHT;
        } else if ( IsDlgButtonChecked ( hDlg,IDB_BS_CENTER ) ) {
            mask |= BS_CENTER;
        } else {
            mask |= BS_LEFT;
        }
#endif

    } else {
        WdeWriteTrail("WdeButtonGetDefineInfo: Bad OBJ_ID!");
        return;
    }

    if (check_lefttext) {
        if ( IsDlgButtonChecked ( hDlg, IDB_BS_LEFTTEXT ) ) {
            mask |= BS_LEFTTEXT;
        }
    }

    SETCTL_STYLE( o_info->info.c.info,
                  ( GETCTL_STYLE(o_info->info.c.info) & 0xffff0000 ) | mask );

    // set the extended mask - same for PushButton, RadioButton
    // CheckBox and GroupBox
    WdeEXGetDefineInfo ( o_info, hDlg );

    return;
}

LRESULT WINEXPORT WdeButtonSuperClassProc( HWND hWnd, UINT message,
                                           WPARAM wParam,
                                           volatile LPARAM lParam )
{
    if ( !WdeProcessMouse ( hWnd, message, wParam, lParam ) ) {
        return( CallWindowProc ( WdeOriginalButtonProc,
                                 hWnd, message, wParam, lParam ) );
    }
    return ( FALSE );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -