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

📄 setup.c

📁 MySQL的ODBC接口程序源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    {      LPSETUPDLG lpsetupdlg;      lpsetupdlg = (LPSETUPDLG)GetWindowLong(hdlg, DWL_USER);      // Retrieve dialog values      if (!lpsetupdlg->fDefault)	GetDlgItemText(hdlg, IDC_DSNAME,		       lpsetupdlg->aAttr[KEY_DSN].szAttr,		       sizeof(lpsetupdlg->aAttr[KEY_DSN].szAttr));      GetDlgItemText(hdlg, IDC_DESC,		     lpsetupdlg->aAttr[KEY_DESC].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_DESC].szAttr));      GetDlgItemText(hdlg, IDC_DB,		     lpsetupdlg->aAttr[KEY_DB].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_DB].szAttr));      GetDlgItemText(hdlg, IDC_SERVER,		     lpsetupdlg->aAttr[KEY_SERVER].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_SERVER].szAttr));      GetDlgItemText(hdlg, IDC_USER,		     lpsetupdlg->aAttr[KEY_USER].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_USER].szAttr));      GetDlgItemText(hdlg, IDC_PASSWORD,		     lpsetupdlg->aAttr[KEY_PASSWORD].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_PASSWORD].szAttr));      GetDlgItemText(hdlg, IDC_PORT,		     lpsetupdlg->aAttr[KEY_PORT].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_PORT].szAttr));      GetDlgItemText(hdlg, IDC_FLAG,		     lpsetupdlg->aAttr[KEY_FLAG].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_FLAG].szAttr));      // Update ODBC.INI      SetDSNAttributes(hdlg, lpsetupdlg);    }    // Return to caller    case IDCANCEL:      Ctl3dUnregister (s_hModule);      EndDialog(hdlg, wParam);      return TRUE;    }    break;  }  // Message not processed  return FALSE;}/* ParseAttributes ---------------------------------------------------------  Description:  Parse attribute string moving values into the aAttr array  Input      :  lpszAttributes - Pointer to attribute string  Output     :  None (global aAttr normally updated)--------------------------------------------------------------------------*/void INTFUNC ParseAttributes(LPCSTR lpszAttributes, LPSETUPDLG lpsetupdlg){  LPCSTR	lpsz;  LPCSTR	lpszStart;  char	aszKey[MAXKEYLEN];  int		iElement;  int		cbKey;  DBUG_ENTER("ParseAttributes");  DBUG_PRINT("enter",("attributes: %s",lpszAttributes));  for (lpsz=lpszAttributes; *lpsz;)  {  //  Extract key name (e.g., DSN), it must be terminated by an equals    lpszStart = lpsz;    if (!(lpsz=strchr(lpsz,'=')))      DBUG_VOID_RETURN;    // Determine the keys index in the key table (-1 if not found)    iElement = -1;    cbKey	 = lpsz - lpszStart;    if (cbKey < sizeof(aszKey))    {      register int j;      _fmemcpy(aszKey, lpszStart, cbKey);      aszKey[cbKey] = '\0';      for (j = 0; *s_aLookup[j].szKey; j++)      {	if (!lstrcmpi(s_aLookup[j].szKey, aszKey))	{	  iElement = s_aLookup[j].iKey;	  break;	}      }    }    // Locate end of key value    lpszStart = ++lpsz;    lpsz=strcend(lpsz,';');    // Save value if key is known    // NOTE: This code assumes the szAttr buffers in aAttr have been    //	   zero initialized    if (iElement >= 0)    {      lpsetupdlg->aAttr[iElement].fSupplied = TRUE;      strmake(lpsetupdlg->aAttr[iElement].szAttr,lpszStart,	      min(lpsz-lpszStart, sizeof(lpsetupdlg->aAttr[0].szAttr)-1));    }    if (*lpsz)      lpsz++;               /* Skipp ';' */  }  DBUG_VOID_RETURN;}void set_attributes(LPSETUPDLG lpsetupdlg){  LPCSTR lpszDSN=lpsetupdlg->aAttr[KEY_DSN].szAttr;  if (!lpsetupdlg->aAttr[KEY_DESC].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KDESC,			       EMPTYSTR,			       lpsetupdlg->aAttr[KEY_DESC].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_DESC].szAttr),			       ODBC_INI);  if (!lpsetupdlg->aAttr[KEY_DB].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KDB,			       lpszDSN,			       lpsetupdlg->aAttr[KEY_DB].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_DB].szAttr),			       ODBC_INI);  if (!lpsetupdlg->aAttr[KEY_SERVER].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KSERVER,			       EMPTYSTR,			       lpsetupdlg->aAttr[KEY_SERVER].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_SERVER].szAttr),			       ODBC_INI);  if (!lpsetupdlg->aAttr[KEY_USER].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KUSER,			       EMPTYSTR,			       lpsetupdlg->aAttr[KEY_USER].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_USER].szAttr),			       ODBC_INI);  if (!lpsetupdlg->aAttr[KEY_PASSWORD].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KPASSWORD,			       EMPTYSTR,			       lpsetupdlg->aAttr[KEY_PASSWORD].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_PASSWORD].				      szAttr),			       ODBC_INI);  if (!lpsetupdlg->aAttr[KEY_PORT].fSupplied)  {    char buff[10];    int2str(MYSQL_PORT,buff,10);    SQLGetPrivateProfileString(lpszDSN, INI_KPORT,			       buff,			       lpsetupdlg->aAttr[KEY_PORT].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_PORT].				      szAttr),			       ODBC_INI);  }  if (!lpsetupdlg->aAttr[KEY_FLAG].fSupplied)    SQLGetPrivateProfileString(lpszDSN, INI_KFLAG,			       "0",			       lpsetupdlg->aAttr[KEY_FLAG].szAttr,			       sizeof(lpsetupdlg->aAttr[KEY_FLAG].				      szAttr),			       ODBC_INI);}/* SetDSNAttributes --------------------------------------------------------  Description:  Write data source attributes to ODBC.INI  Input      :  hwnd - Parent window handle (plus globals)  Output     :  TRUE if successful, FALSE otherwise--------------------------------------------------------------------------*/BOOL INTFUNC SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg){  LPCSTR lpszDSN=lpsetupdlg->aAttr[KEY_DSN].szAttr;  // Pointer to data source name  // Validate arguments  if (lpsetupdlg->fNewDSN && !*lpsetupdlg->aAttr[KEY_DSN].szAttr)    return FALSE;  // Write the data source name  if (!SQLWriteDSNToIni(lpszDSN, lpsetupdlg->lpszDrvr))  {    if (hwndParent)    {      char  szBuf[MAXPATHLEN];      char  szMsg[MAXPATHLEN];      LoadString(s_hModule, IDS_BADDSN, szBuf, sizeof(szBuf));      wsprintf(szMsg, szBuf, lpszDSN);      LoadString(s_hModule, IDS_MSGTITLE, szBuf, sizeof(szBuf));      MessageBox(hwndParent, szMsg, szBuf, MB_ICONEXCLAMATION | MB_OK);    }    return FALSE;  }  // Update ODBC.INI  // Save the value if the data source is new, if it was edited, or if  // it was explicitly supplied  if (hwndParent || lpsetupdlg->aAttr[KEY_DESC].fSupplied )    SQLWritePrivateProfileString(lpszDSN,				 INI_KDESC,				 lpsetupdlg->aAttr[KEY_DESC].szAttr,				 ODBC_INI);  if (hwndParent || lpsetupdlg->aAttr[KEY_DB].fSupplied )    SQLWritePrivateProfileString(lpszDSN,				 INI_KDB,				 lpsetupdlg->aAttr[KEY_DB].szAttr,				 ODBC_INI);  if (hwndParent || lpsetupdlg->aAttr[KEY_SERVER].fSupplied )    SQLWritePrivateProfileString(lpszDSN,				 INI_KSERVER,				 lpsetupdlg->aAttr[KEY_SERVER].szAttr,				 ODBC_INI);  if (hwndParent || lpsetupdlg->aAttr[KEY_USER].fSupplied )    SQLWritePrivateProfileString(lpszDSN,				 INI_KUSER,				 lpsetupdlg->aAttr[KEY_USER].szAttr,				 ODBC_INI);  if (hwndParent || lpsetupdlg->aAttr[KEY_PASSWORD].fSupplied )    SQLWritePrivateProfileString(lpszDSN,				 INI_KPASSWORD,				 lpsetupdlg->aAttr[KEY_PASSWORD].szAttr,				 ODBC_INI);  if (hwndParent || lpsetupdlg->aAttr[KEY_PORT].fSupplied )  {    SQLWritePrivateProfileString(lpszDSN,				 INI_KPORT,				 lpsetupdlg->aAttr[KEY_PORT].szAttr,				 ODBC_INI);  }  if (hwndParent || lpsetupdlg->aAttr[KEY_FLAG].fSupplied )  {    SQLWritePrivateProfileString(lpszDSN,				 INI_KFLAG,				 lpsetupdlg->aAttr[KEY_FLAG].szAttr,				 ODBC_INI);  }  // If the data source name has changed, remove the old name  if (lpsetupdlg->aAttr[KEY_DSN].fSupplied &&      lstrcmpi(lpsetupdlg->szDSN, lpsetupdlg->aAttr[KEY_DSN].szAttr))  {    SQLRemoveDSNFromIni(lpsetupdlg->szDSN);  }  return TRUE;}/******************************************************************************* Connect dialog for driver connect*****************************************************************************/BOOL FAR PASCAL DriverConnectProc(HWND hdlg,WORD wMsg,	WPARAM wParam,				  LPARAM lParam){  LPSETUPDLG lpsetupdlg;  switch (wMsg) {  case WM_INITDIALOG:    Ctl3dRegister (s_hModule);    SetWindowLong(hdlg, DWL_USER, lParam);#ifdef WIN32    Ctl3dSubclassDlg(hdlg, CTL3D_ALL);#else    Ctl3dSubclassDlgEx(hdlg, CTL3D_ALL);#endif    CenterDialog(hdlg);    lpsetupdlg = (LPSETUPDLG) lParam;    set_attributes(lpsetupdlg);    SetDlgItemText(hdlg, IDC_DSNAME,	 lpsetupdlg->aAttr[KEY_DSN].szAttr);    SetDlgItemText(hdlg, IDC_DB,	 lpsetupdlg->aAttr[KEY_DB].szAttr);    SetDlgItemText(hdlg, IDC_SERVER,	 lpsetupdlg->aAttr[KEY_SERVER].szAttr);    SetDlgItemText(hdlg, IDC_USER,	 lpsetupdlg->aAttr[KEY_USER].szAttr);    SetDlgItemText(hdlg, IDC_PASSWORD,	 lpsetupdlg->aAttr[KEY_PASSWORD].szAttr);    SetDlgItemText(hdlg, IDC_PORT, lpsetupdlg->aAttr[KEY_PORT].szAttr);    SetDlgItemText(hdlg, IDC_FLAG, lpsetupdlg->aAttr[KEY_FLAG].szAttr);    SendDlgItemMessage(hdlg, IDC_DSNAME,		       EM_LIMITTEXT, (WPARAM)(MAXDSNAME-1), 0L);    SendDlgItemMessage(hdlg, IDC_DESC,		       EM_LIMITTEXT, (WPARAM)(MAXDESC-1), 0L);    SendDlgItemMessage(hdlg, IDC_DB,		       EM_LIMITTEXT, (WORD)(NAME_LEN), 0L);    SendDlgItemMessage(hdlg, IDC_SERVER,		       EM_LIMITTEXT, (WORD)(MAXSERVER-1), 0L);    SendDlgItemMessage(hdlg, IDC_USER,		       EM_LIMITTEXT, (WORD)(MAXUSER-1), 0L);    SendDlgItemMessage(hdlg, IDC_PASSWORD,		       EM_LIMITTEXT, (WORD)(MAXPASSWORD-1), 0L);    SendDlgItemMessage(hdlg, IDC_PORT,		       EM_LIMITTEXT, (WORD)5, 0L);    SendDlgItemMessage(hdlg, IDC_FLAG,		       EM_LIMITTEXT, (WORD)5, 0L);    return TRUE;#ifdef WIN32  case WM_CTLCOLORBTN:  case WM_CTLCOLORDLG:  case WM_CTLCOLOREDIT:  case WM_CTLCOLORLISTBOX:  case WM_CTLCOLORMSGBOX:  case WM_CTLCOLORSCROLLBAR:  case WM_CTLCOLORSTATIC:    return (BOOL)Ctl3dCtlColorEx(wMsg, wParam, lParam);  case WM_SETTEXT:  case WM_NCPAINT:  case WM_NCACTIVATE:    SetWindowLong(hdlg, DWL_MSGRESULT,		  Ctl3dDlgFramePaint(hdlg, wMsg, wParam, lParam));    return TRUE;#endif  case WM_SYSCOLORCHANGE:    return Ctl3dColorChange();  case WM_COMMAND:    switch (GET_WM_COMMAND_ID(wParam, lParam)) {    case IDC_DSNAME:      if (GET_WM_COMMAND_CMD(wParam, lParam) == EN_CHANGE)      {	char	szItem[MAXDSNAME];	EnableWindow(GetDlgItem(hdlg, IDOK),		     GetDlgItemText(hdlg, IDC_DSNAME,szItem, sizeof(szItem)));	return TRUE;      }      break;    case IDOK:      lpsetupdlg = (LPSETUPDLG)GetWindowLong(hdlg, DWL_USER);      GetDlgItemText(hdlg, IDC_DSNAME,		     lpsetupdlg->aAttr[KEY_DSN].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_DSN].szAttr));      GetDlgItemText(hdlg, IDC_DB,		     lpsetupdlg->aAttr[KEY_DB].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_DB].szAttr));      GetDlgItemText(hdlg, IDC_SERVER,		     lpsetupdlg->aAttr[KEY_SERVER].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_SERVER].szAttr));      GetDlgItemText(hdlg, IDC_USER,		     lpsetupdlg->aAttr[KEY_USER].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_USER].szAttr));      GetDlgItemText(hdlg, IDC_PASSWORD,		     lpsetupdlg->aAttr[KEY_PASSWORD].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_PASSWORD].szAttr));      GetDlgItemText(hdlg, IDC_PORT,		     lpsetupdlg->aAttr[KEY_PORT].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_PORT].szAttr));      GetDlgItemText(hdlg, IDC_FLAG,		     lpsetupdlg->aAttr[KEY_FLAG].szAttr,		     sizeof(lpsetupdlg->aAttr[KEY_FLAG].szAttr));    case IDCANCEL:      Ctl3dUnregister (s_hModule);      EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam) == IDOK);      return TRUE;    }  }  return FALSE;}

⌨️ 快捷键说明

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