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

📄 jdlg.c

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
        UnlockResource( htemplate );
#endif
        return( NULL );
    }

    // copy template data up to fontinfo
    memcpy( newTemplate, template, fontinfo - template );

    // copy the new fontinfo
    memcpy( newTemplate + ( fontinfo - template ), JFontInfo, JFontInfoLen );

    // copy the rest of the template data
    memcpy( newTemplate + newdlgHeaderSize, template + dlgHeaderSize,
            ctlInfoSize );

    GlobalUnlock( newHTemplate );
#ifndef __NT__
    UnlockResource( htemplate );
#endif

    return( newHTemplate );
}

BOOL JDialogInit( void )
/**********************/
{
    char        *typeface;
    short       pointsize;

    if( !GetSystemMetrics( SM_DBCSENABLED ) ) {
        return( TRUE );
    }

    if( !getSystemFontTypeface( &typeface, &pointsize ) ) {
        return( FALSE );
    }

    return( createFontInfoData( typeface, pointsize, &JFontInfo,
                                &JFontInfoLen ) );
}

void JDialogFini( void )
/**********************/
{
    if( JFontInfo ) {
        MemFree( JFontInfo );
        JFontInfo = NULL;
        JFontInfoLen = 0;
    }
}

static HWND cdIndirect( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                        HWND hwndOwner, DLGPROC dlgproc, DWORD size )
/*****************************************************/
{
    HGLOBAL     newtemplate;
    HWND        ret;

    if( JFontInfo == NULL ) {
        goto CDI_DEFAULT_ACTION;
    }

    newtemplate = createJTemplate( hglblDlgTemp, size );
    if( newtemplate == (HGLOBAL) NULL ) {
        goto CDI_DEFAULT_ACTION;
    }

    ret = CreateDialogIndirect( hinst, GlobalLock( newtemplate ),
                                hwndOwner, dlgproc );
    GlobalUnlock( newtemplate );

    GlobalFree( newtemplate );

    return( ret );

CDI_DEFAULT_ACTION:
    ret = CreateDialogIndirect( hinst, GlobalLock( hglblDlgTemp ),
                                hwndOwner, dlgproc );
    GlobalUnlock( hglblDlgTemp );

    return( ret );
}

static HWND cdIndirectParam( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                             HWND hwndOwner, DLGPROC dlgproc,
                             LPARAM lParamInit, DWORD size )
/*************************************/
{
    HGLOBAL     newtemplate;
    HWND        ret;

    if( JFontInfo == NULL ) {
        goto CDIP_DEFAULT_ACTION;
    }

    newtemplate = createJTemplate( hglblDlgTemp, size );
    if( newtemplate == (HGLOBAL) NULL ) {
        goto CDIP_DEFAULT_ACTION;
    }

    ret = CreateDialogIndirectParam( hinst, GlobalLock( newtemplate ),
                                     hwndOwner, dlgproc, lParamInit );
    GlobalUnlock( newtemplate );

    GlobalFree( newtemplate );

    return( ret );

CDIP_DEFAULT_ACTION:
    ret = CreateDialogIndirectParam( hinst, GlobalLock( hglblDlgTemp ),
                                     hwndOwner, dlgproc, lParamInit );
    GlobalUnlock( hglblDlgTemp );

    return( ret );
}

static int dbIndirect( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                       HWND hwndOwner, DLGPROC dlgproc, DWORD size )
/****************************************************/
{
    HGLOBAL     newtemplate;
    int         ret;

    if( JFontInfo == NULL ) {
        goto DBI_DEFAULT_ACTION;
    }

    newtemplate = createJTemplate( hglblDlgTemp, size );
    if( newtemplate == (HGLOBAL) NULL ) {
        goto DBI_DEFAULT_ACTION;
    }

    #if defined(__NT__)
        ret = DialogBoxIndirect( hinst, GlobalLock( newtemplate ),
                                 hwndOwner, dlgproc );
        GlobalUnlock( newtemplate );
    #else
        ret = DialogBoxIndirect( hinst, newtemplate, hwndOwner, dlgproc );
    #endif

    GlobalFree( newtemplate );

    return( ret );

DBI_DEFAULT_ACTION:
    return( DialogBoxIndirect( hinst, hglblDlgTemp, hwndOwner, dlgproc ) );
}

static int dbIndirectParam( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                            HWND hwndOwner, DLGPROC dlgproc,
                            LPARAM lParamInit, DWORD size )
/************************************/
{
    HGLOBAL     newtemplate;
    int         ret;

    if( JFontInfo == NULL ) {
        goto DBIP_DEFAULT_ACTION;
    }

    newtemplate = createJTemplate( hglblDlgTemp, size );
    if( newtemplate == (HGLOBAL) NULL ) {
        goto DBIP_DEFAULT_ACTION;
    }

    #if defined(__NT__)
        ret = DialogBoxIndirectParam( hinst, GlobalLock( newtemplate ),
                                      hwndOwner, dlgproc, lParamInit );
        GlobalUnlock( newtemplate );
    #else
        ret = DialogBoxIndirectParam( hinst, newtemplate,
                                      hwndOwner, dlgproc, lParamInit );
    #endif

    GlobalFree( newtemplate );

    return( ret );

DBIP_DEFAULT_ACTION:
    return( DialogBoxIndirectParam( hinst, hglblDlgTemp, hwndOwner, dlgproc, lParamInit ) );
}

int JDialogBoxIndirect( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                        HWND hwndOwner, DLGPROC dlgproc )
/**********************************/
{
    return( dbIndirect( hinst, hglblDlgTemp, hwndOwner, dlgproc, -1 ) );
}

int JDialogBoxIndirectParam( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                             HWND hwndOwner, DLGPROC dlgproc,
                             LPARAM lParamInit )
/*************************/
{
    return( dbIndirectParam( hinst, hglblDlgTemp, hwndOwner, dlgproc,
                             lParamInit, -1 ) );
}

HWND JCreateDialogIndirect( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                            HWND hwndOwner, DLGPROC dlgproc )
/**************************************/
{
    return( cdIndirect( hinst, hglblDlgTemp, hwndOwner, dlgproc, -1 ) );
}

HWND JCreateDialogIndirectParam( HINSTANCE hinst, HGLOBAL hglblDlgTemp,
                                 HWND hwndOwner, DLGPROC dlgproc,
                                 LPARAM lParamInit )
/**********************/
{
    return( cdIndirectParam( hinst, hglblDlgTemp, hwndOwner, dlgproc,
                             lParamInit, -1 ) );
}

int JDialogBox( HINSTANCE hinst, LPCSTR lpszDlgTemp,
                HWND hwndOwner, DLGPROC dlgproc )
/*********************************/
{
    HGLOBAL     template;
    DWORD       size;
    int         ret;

    if( JFontInfo == NULL ) {
        goto JDB_DEFAULT_ACTION;
    }

    template = loadDialogTemplate( hinst, lpszDlgTemp, &size );
    if( template == (HGLOBAL) NULL ) {
        goto JDB_DEFAULT_ACTION;
    }

    ret = dbIndirect( hinst, template, hwndOwner, dlgproc, size );

    FreeResource( template );

    return( ret );

JDB_DEFAULT_ACTION:
    return( DialogBox( hinst, lpszDlgTemp, hwndOwner, dlgproc ) );
}

int JDialogBoxParam( HINSTANCE hinst, LPCSTR lpszDlgTemp,
                     HWND hwndOwner, DLGPROC dlgproc,
                     LPARAM lParamInit )
/************************/
{
    HGLOBAL     template;
    DWORD       size;
    int         ret;

    if( JFontInfo == NULL ) {
        goto JDBP_DEFAULT_ACTION;
    }

    template = loadDialogTemplate( hinst, lpszDlgTemp, &size );
    if( template == (HGLOBAL) NULL ) {
        goto JDBP_DEFAULT_ACTION;
    }

    ret = dbIndirectParam( hinst, template, hwndOwner, dlgproc,
                           lParamInit, size );

    FreeResource( template );

    return( ret );

JDBP_DEFAULT_ACTION:
    return( DialogBoxParam( hinst, lpszDlgTemp, hwndOwner, dlgproc, lParamInit ) );
}

HWND JCreateDialog( HINSTANCE hinst, LPCSTR lpszDlgTemp,
                    HWND hwndOwner, DLGPROC dlgproc )
/*************************************/
{
    HGLOBAL     template;
    DWORD       size;
    HWND        ret;

    if( JFontInfo == NULL ) {
        goto JCD_DEFAULT_ACTION;
    }

    template = loadDialogTemplate( hinst, lpszDlgTemp, &size );
    if( template == (HGLOBAL) NULL ) {
        goto JCD_DEFAULT_ACTION;
    }

    ret = cdIndirect( hinst, template, hwndOwner, dlgproc, size );

    FreeResource( template );

    return( ret );

JCD_DEFAULT_ACTION:
    return( CreateDialog( hinst, lpszDlgTemp, hwndOwner, dlgproc ) );
}

HWND JCreateDialogParam( HINSTANCE hinst, LPCSTR lpszDlgTemp,
                         HWND hwndOwner, DLGPROC dlgproc, LPARAM lParamInit )
/******************************************************/
{
    HGLOBAL     template;
    DWORD       size;
    HWND        ret;

    if( JFontInfo == NULL ) {
        goto JCDP_DEFAULT_ACTION;
    }

    template = loadDialogTemplate( hinst, lpszDlgTemp, &size );
    if( template == (HGLOBAL) NULL ) {
        goto JCDP_DEFAULT_ACTION;
    }

    ret = cdIndirectParam( hinst, template, hwndOwner, dlgproc,
                           lParamInit, size );

    FreeResource( template );

    return( ret );

JCDP_DEFAULT_ACTION:
    return( CreateDialogParam( hinst, lpszDlgTemp, hwndOwner,
                               dlgproc, lParamInit ) );
}

BOOL JDialogGetJFont( char **typeface, short *pointsize )
{
    return( getSystemFontTypeface( typeface, pointsize ) );
}

⌨️ 快捷键说明

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