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

📄 rcdlg.c

📁 UNIX 资源文件编译器
💻 C
字号:
/*****************************************************************************    ------------	子系统名称: 界面资源管理器*      RCDLG.H*    ------------	模块名称  : 对话框资源编译程序****************************************************************************/#include	"typedef.h"#include	"dialog.h"#include	"rc.h"/*****************************************************************************    函数原型: GetCtrlTypeID ( short nKeyWord )**    功    能: 返回控制所用的关键字值**    编程人员: Zhu haibin**    编码时间: 1994/09/15**    修改时间:**    入口参数: short nKeyWord	--	关键字标识号**    出口参数: > OK 调用成功*	       < OK 不是控制关键字**    实现算法:**    上层调用: CompileCtrlGroup**    下层调用: 无****************************************************************************/short	GetCtrlTypeID ( short nKeyWord ){	switch ( nKeyWord )	{	    case ID_TEXT        : return ( DT_TEXT 	  );	    case ID_STATIC      : return ( DT_STATIC	  );	    case ID_BUTTON      : return ( DT_BUTTON	  );	    case ID_RADIOBUTTON : return ( DT_RADIOBUTTON );	    case ID_CHECKBOX    : return ( DT_CHECKBOX	  );	    case ID_EDIT        : return ( DT_EDIT	  );	    case ID_LISTBOX     : return ( DT_LISTBOX	  );	    default             : return ( ERR_RES_SYNTAX );	}}/*****************************************************************************    函数原型: GetCtrlStyleID ( short nKeyWord )**    功    能: 返回控制所用的关键字值**    编程人员: Zhu haibin**    编码时间: 1994/09/15**    修改时间:**    入口参数: short nKeyWord	--	关键字标识号**    出口参数: > OK 调用成功*	       < OK 不是控制关键字**    实现算法:**    上层调用: CompileCtrlGroup**    下层调用: 无****************************************************************************/short	GetCtrlStyleID ( short nKeyWord ){	switch ( nKeyWord )	{	    case ID_DS_TABSTOP  : return ( DS_TABSTOP     );	    case ID_DS_GROUP    : return ( DS_GROUP       );	    case ID_TS_LEFT     : return ( TS_LEFT        );	    case ID_TS_RIGHT    : return ( TS_RIGHT       );	    case ID_TS_CENTER   : return ( TS_CENTER      );	    case ID_TS_HIGHLIGHT: return ( TS_HIGHLIGHT   );	    case ID_TS_REVERSE  : return ( TS_REVERSE     );	    case ID_TS_UNDERLINE: return ( TS_UNDERLINE   );	    case ID_SS_FRAME    : return ( SS_FRAME       );	    case ID_SS_HLINE    : return ( SS_HLINE       );	    case ID_SS_VLINE    : return ( SS_VLINE       );	    case ID_SS_HIGHLIGHT: return ( SS_HIGHLIGHT   );	    case ID_SS_REVERSE  : return ( SS_REVERSE     );	    case ID_BS_DEFAULT  : return ( BS_DEFAULT     );	    case ID_ES_ALPHA    : return ( ES_ALPHA       );	    case ID_ES_DICIMAL  : return ( ES_DICIMAL     );	    case ID_ES_LOWER    : return ( ES_LOWER       );	    case ID_ES_UPPER    : return ( ES_UPPER       );	    case ID_ES_AUTOSKIP : return ( ES_AUTOSKIP    );	    case ID_ES_PASSWORD : return ( ES_PASSWORD    );	    case ID_LBS_MULTIPLE: return ( LBS_MULTIPLE   );	    default             : return ( ERR_RES_SYNTAX );	}}/*****************************************************************************    函数原型: CompileCtrlGroup ( char **ppRESBuf, char *pWord, PDIALOG pdDlg )**    功    能: 编译对话框的所有控制**    编程人员: Zhu haibin**    编码时间: 1994/09/15**    修改时间:**    入口参数: char	**ppRESBuf	资源数据缓冲区*	       char	*pWord		单词缓冲区*	       PDIALOG	pdDlg		对话框指针**    出口参数: = OK 编译成功*	       < OK 编译失败**    实现算法:**    上层调用: CompileDialog**    下层调用: GetWord*	       WordToInt*	       CheckKeyWord****************************************************************************/short	CompileCtrlGroup ( char **ppRESBuf, char *pWord, PDIALOG pdDlg ){	short	nErrorID;	short	nGroup = 0;	short	nPos[4];	short	i, j;	pdDlg->nDefButton = -1;	/* 获得 ID_BEGIN */	if ( GetWord ( ppRESBuf, pWord ) < OK )	  return ( ERR_RES_SYNTAX );	if ( CheckKeyWord ( pWord ) != ID_BEGIN )	  return ( ERR_RES_NOTKEYWORD );	/* 获得第一个控制 */	if ( GetWord ( ppRESBuf, pWord ) < OK )	  return ( ERR_RES_SYNTAX );	nErrorID = CheckKeyWord ( pWord );	while ( 1 )	{	  if ( nErrorID == ID_END )	    break;	  /* 获得控制类型 */	  if ( ( j = GetCtrlTypeID ( nErrorID ) ) < OK )	    return ( ERR_RES_SYNTAX );	  /* 创建一个新的控制 */	  if ( NewControler ( &(pdDlg->pctrlTable[pdDlg->nCount]) ) < OK )	    return ( ERR_NOMEMORY );	  i = pdDlg->nCount ++;	  pdDlg->pctrlTable[i]->nType = j;	  /* 获得控制的动作标识号 */	  if ( GetWord ( ppRESBuf, pWord ) < OK )	    return ( ERR_RES_SYNTAX );	  if ( WordToInt ( &(pdDlg->pctrlTable[i]->nAction), pWord ) < OK )	    return ( ERR_RES_DIGIT );	  /* 获得控制的文本字符串 */	  if ( GetWord ( ppRESBuf, pdDlg->pctrlTable[i]->pCaption ) < OK )	    return ( ERR_RES_SYNTAX );	  /* 获得控制的位置和大小 */	  for ( j = 0; j < 4; j++ )	  {	    if ( GetWord ( ppRESBuf, pWord ) < OK )	      return ( ERR_RES_SYNTAX );	    if ( WordToInt ( &nPos[j], pWord ) < OK )	      return ( ERR_RES_DIGIT );	  }	  pdDlg->pctrlTable[i]->nX1  = nPos[0];	  pdDlg->pctrlTable[i]->nY1  = nPos[1];	  pdDlg->pctrlTable[i]->nX2 = nPos[2];	  pdDlg->pctrlTable[i]->nY2  = nPos[3];	  /* 获得控制的属性 */	  pdDlg->pctrlTable[i]->nStyle = 0;	  do	  {	    if ( GetWord ( ppRESBuf, pWord ) < OK )	      return ( ERR_RES_SYNTAX );	    if ( ( nErrorID = CheckKeyWord ( pWord ) ) < OK )	      return ( ERR_RES_NOTKEYWORD );	    if ( ( j = GetCtrlStyleID ( nErrorID ) ) > OK )	      pdDlg->pctrlTable[i]->nStyle |= j;	  } while ( j > OK );	  if ( pdDlg->pctrlTable[i]->nStyle & DS_GROUP )	  {	    pdDlg->pctrlTable[i]->nGroup = ( i << 8 ) + i;	    nGroup = i;	  }	  else	    pdDlg->pctrlTable[i]->nGroup = ( nGroup << 8 ) + nGroup;	  if ( ( pdDlg->pctrlTable[i]->nType == DT_BUTTON ) && ( pdDlg->pctrlTable[i]->nStyle & BS_DEFAULT ) )	  {	    if ( pdDlg->nDefButton != -1 )	      pdDlg->pctrlTable[i]->nStyle &= ~BS_DEFAULT ;	    else	      pdDlg->nDefButton = i;	  }	}	return ( OK );}/*****************************************************************************    函数原型: CompileDialog ( char **ppRESBuf, char *pWord, void **ppdDialog )**    功    能: 编译对话框资源**    编程人员: Zhu haibin**    编码时间: 1994/09/15**    修改时间:**    入口参数: char	**ppRESBuf	资源数据缓冲区*	       char	*pWord		单词缓冲区**    出口参数: >0 编译成功		本对话框资源标识号*					ppdDialog 为菜单指针*	       <0 编译失败**    实现算法:**    上层调用: CompileResource**    下层调用: GetWord*	       WordToInt*	       CheckKeyWord****************************************************************************/short	CompileDialog ( char **ppRESBuf, char *pWord, void **ppdDialog ){	PDIALOG	pdDlg;	short	nErrorID;	short	nDialogID;	short	nPos[4];	char	pCaption[MAXL_CTRLTEXT];	short	i;	/* 获得对话框资源标识号 */	if ( GetWord ( ppRESBuf, pWord ) < OK )	  return ( ERR_RES_SYNTAX );	if ( WordToInt ( &nDialogID, pWord ) < OK )	  return ( ERR_RES_DIGIT );	/* 获得对话框位置和大小 */	for ( i = 0; i < 4; i++ )	{	  if ( GetWord ( ppRESBuf, pWord ) < OK )	    return ( ERR_RES_SYNTAX );	  if ( WordToInt ( &nPos[i], pWord ) < OK )	    return ( ERR_RES_DIGIT );	}	/* 获得关键字 CAPTION */	if ( GetWord ( ppRESBuf, pWord ) < OK )	  return ( ERR_RES_SYNTAX );	if ( CheckKeyWord ( pWord ) != ID_CAPTION )	  return ( ERR_RES_NOTKEYWORD );	/* 获得标题内容 */	if ( GetWord ( ppRESBuf, pCaption ) < OK )	  return ( ERR_RES_SYNTAX );	/* 创建对话框资源 */	if ( NewDialog ( &pdDlg ) < OK )	  return ( ERR_NOMEMORY );	pdDlg->nCount  = 0;	pdDlg->nPosX   = nPos[0];	pdDlg->nPosY   = nPos[1];	pdDlg->nWidth  = nPos[2];	pdDlg->nHigh   = nPos[3];	strcpy ( pdDlg->pCaption, pCaption );	/* 编译所有控制 */	nErrorID = CompileCtrlGroup ( ppRESBuf, pWord, pdDlg );	if ( nErrorID < OK )	  FreeDialog ( pdDlg );	else	  *ppdDialog = (void*)pdDlg;	return ( nDialogID );}

⌨️ 快捷键说明

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