INI.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:11k
源码类别:
Windows编程
开发平台:
Visual C++
- //*---------------------------------------------------------------------------------
- //| ODBC System Administrator
- //|
- //| This code is furnished on an as-is basis as part of the ODBC SDK and is
- //| intended for example purposes only.
- //|
- //| Title: INI.C
- //| This module contains the functions which work with SATOOL.INI.
- //*---------------------------------------------------------------------------------
- #include "ini.h"
- #include "results.h"
- #include <commdlg.h>
- //*---------------------------------------------------------------------------------
- //| Global variables
- //*---------------------------------------------------------------------------------
- dCSEG(char) szLABINI[] = "ADMNDEMO.INI";
- dCSEG(char) szSCREEN[] = "screen";
- dCSEG(char) szMAX[] = "Maximized";
- dCSEG(char) szCONNECTOPTIONS[] = "Connect Options";
- dCSEG(char) szMAXRESULTS[] = "Max Results Windows";
- dCSEG(char) szFONT[] = "Font";
- dCSEG(char) szFONTSIZE[] = "FontSize";
- dCSEG(char) szFONTWEIGHT[] = "FontWeight";
- dCSEG(char) szFONTNAME[] = "FontName";
- dCSEG(char) szFONTRGB[] = "FontColor";
- dCSEG(char) szSTRIKEOUT[] = "FontStrikeOut";
- dCSEG(char) szUNDERLINE[] = "FontUnderline";
- dCSEG(char) szFONTSTYLE[] = "FontStyle";
- dCSEG(char) szPIPES[] = "Pipes";
- dCSEG(char) szRegular[] = "Regular";
- dCSEG(char) szArial[] = "Arial";
- dCSEG(char) szMSSansSerif[] = "MS Sans Serif";
- dCSEG(char) szINSTALL[] = "Installed";
- dCSEG(char) szDROPPROC[] = "Drop Procedure (with semi-colon)";
- dCSEG(char) szDROPTABLE[] = "Drop Table";
- dCSEG(char) szSQLSECTION[] = "Sql";
- dCSEG(char) szPARMSSECTION[] = "Parms";
- dCSEG(char) szPARMOPTSECTION[] = "ParmOpt";
- dCSEG(char) szDELETESECTION[] = "Delete";
- dCSEG(char) szSQLDROPSTMT[] = "drop procedure ?";
- dCSEG(char) szSQLDROPTABLESTMT[] = "drop table ?";
- dCSEG(char) szPARMVALUE[] = "value";
- dCSEG(char) szPARM1[] = "1";
- dCSEG(char) szPARM3[] = "3";
- //*---------------------------------------------------------------------------------
- //| Local Functions
- //*---------------------------------------------------------------------------------
- LPSTR GetFontStyle(LPSTR szStyle, int cbStyle);
- void SetDefaultFont(LOGFONT FAR * lf);
- void SetDefaultRGB(COLORREF rgb);
- void SetFontStyle(LPSTR szFontStyle);
- //*---------------------------------------------------------------------------------
- //| ResolveIniFile:
- //| Look for ADMNDEMO.INI, if not found, fill out the defaults.
- //| Parms:
- //| Nothing
- //| Returns:
- //| Nothing.
- //*---------------------------------------------------------------------------------
- VOID INTFUN ResolveIniFile()
- {
- // Max status is written after every exit, so if this constant cannot
- // be found, there is no file to find.
- if(GetPrivateProfileInt(szSCREEN, szMAX, -1, szLABINI) == -1) {
- // No file, create one
- WritePrivateProfileString(szPIPES, szDROPPROC, szINSTALL, szLABINI);
- WritePrivateProfileString(szDROPPROC, szSQLSECTION, szSQLDROPSTMT, szLABINI);
- WritePrivateProfileString(szDROPPROC, szPARMSSECTION, szPARM3, szLABINI);
- WritePrivateProfileString(szDROPPROC, szPARMOPTSECTION, szPARMVALUE, szLABINI);
- WritePrivateProfileString(szDROPPROC, szDELETESECTION, szPARM1, szLABINI);
- WritePrivateProfileString(szPIPES, szDROPTABLE, szINSTALL, szLABINI);
- WritePrivateProfileString(szDROPTABLE, szSQLSECTION, szSQLDROPTABLESTMT, szLABINI);
- WritePrivateProfileString(szDROPTABLE, szPARMSSECTION, szPARM3, szLABINI);
- WritePrivateProfileString(szDROPTABLE, szPARMOPTSECTION, szPARMVALUE, szLABINI);
- WritePrivateProfileString(szDROPTABLE, szDELETESECTION, szPARM1, szLABINI);
- }
- }
- //*---------------------------------------------------------------------------------
- //| GetDefaultFont:
- //| This function will retrieve all of the font information that is stored in
- //| the .INI file and places it in the LOGFONT structure passed in.
- //| NOTE: User should clear the LOGFONT structure to 0 (eg: fmemset(&lf, 0,sizeof())
- //| before calling this function. The font name buffer must point to a user's
- //| allocated buffer.
- //| Parms:
- //| in lf LOGFONT structure
- //| Returns:
- //| Pointer to the LOGFONT structure passed in or NULL on error.
- //*---------------------------------------------------------------------------------
- LOGFONT FAR * GetDefaultFont(LOGFONT FAR * lf)
- {
- lf->lfHeight = GetPrivateProfileInt(szFONT, szFONTSIZE, -12, szLABINI);
- lf->lfWeight = GetPrivateProfileInt(szFONT, szFONTWEIGHT, FW_NORMAL, szLABINI);
- lf->lfStrikeOut = GetPrivateProfileInt(szFONT, szSTRIKEOUT, 0, szLABINI);
- lf->lfUnderline = GetPrivateProfileInt(szFONT, szUNDERLINE, 0, szLABINI);
- lf->lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS;
- if(!GetPrivateProfileString(szFONT, szFONTNAME, NULL,
- lf->lfFaceName, LF_FACESIZE, szLABINI))
- lstrcpy(lf->lfFaceName, (LPSTR)szArial);
- return lf;
- }
- //*---------------------------------------------------------------------------------
- //| SetDefaultFont:
- //| This function uses the values in the LOGFONT structure passed in to write the
- //| default values to the .INI file.
- //| Parms:
- //| in lf LOGFONT structure
- //| Returns:
- //| Nothing
- //*---------------------------------------------------------------------------------
- void SetDefaultFont(LOGFONT FAR * lf)
- {
- char szTmp[20];
- char szpd[] = "%d";
- wsprintf(szTmp, szpd, lf->lfHeight);
- WritePrivateProfileString(szFONT, szFONTSIZE, szTmp, szLABINI);
- wsprintf(szTmp, szpd, lf->lfWeight);
- WritePrivateProfileString(szFONT, szFONTWEIGHT, szTmp, szLABINI);
- wsprintf(szTmp, szpd, lf->lfStrikeOut);
- WritePrivateProfileString(szFONT, szSTRIKEOUT, szTmp, szLABINI);
- wsprintf(szTmp, szpd, lf->lfUnderline);
- WritePrivateProfileString(szFONT, szUNDERLINE, szTmp, szLABINI);
- WritePrivateProfileString(szFONT, szFONTNAME, lf->lfFaceName, szLABINI);
- }
- //*---------------------------------------------------------------------------------
- //| GetDefaultRGB:
- //| This function will retrieve the default rgbvalue from the ini file.
- //| Parms:
- //| Nothing.
- //| Returns:
- //| A COLORREF value that can be used for color.
- //*---------------------------------------------------------------------------------
- COLORREF GetDefaultRGB(void)
- {
- COLORREF dft;
- LPSTR lpsz;
- char szBuff[20];
- if(!GetPrivateProfileString(szSCREEN, szFONTRGB, NULL,
- szBuff, sizeof(szBuff), szLABINI))
- dft = RGB(0,0,0); // If not specified, use Black
- else
- dft = strtoul(szBuff, &lpsz, 10);
- return dft;
- }
- //*---------------------------------------------------------------------------------
- //| SetDefaultRGB:
- //| This function will set the default RGB value which will be used for
- //| color.
- //| Parms:
- //| in rgb The rgb value to use
- //| Returns:
- //| Nothing
- //*---------------------------------------------------------------------------------
- void SetDefaultRGB(COLORREF rgb)
- {
- char szBuff[20];
- wsprintf(szBuff, "%lu", rgb);
- WritePrivateProfileString(szSCREEN, szFONTRGB,
- szBuff, szLABINI);
- }
- //*---------------------------------------------------------------------------------
- //| GetFontStyle:
- //| This function will copy the default font style to the user's buffer.
- //| Parms:
- //| in szStyle Pointer to output for font sytle
- //| in cbStyle Maximum size of buffer
- //| Returns:
- //| Style to use, NULL otherwise
- //*---------------------------------------------------------------------------------
- LPSTR GetFontStyle(LPSTR szStyle, int cbStyle)
- {
- if(!GetPrivateProfileString(szSCREEN, szFONTSTYLE, NULL,
- szStyle, cbStyle, szLABINI))
- lstrcpy(szStyle, (LPSTR)szRegular);
- return szStyle;
- }
- //*---------------------------------------------------------------------------------
- //| SetFontStyle:
- //| This function will set the default font style.
- //| Parms:
- //| in szFontStyle The new font style
- //| Returns:
- //| Nothing
- //*---------------------------------------------------------------------------------
- void SetFontStyle(LPSTR szFontStyle)
- {
- WritePrivateProfileString(szSCREEN, szFONTSTYLE,
- szFontStyle, szLABINI);
- }
- //*---------------------------------------------------------------------------------
- //| GetPipeNames:
- //| This function will get as many pipes as will fit into the user's
- //| buffer. The list is simply retrieve via GetPrivateProfileString
- //| and therefore each pipe name will be null terminated with 2 nulls
- //| at the end of the entire list.
- //| Parms:
- //| in szPipes Pointer to string to hold names
- //| in size Maximum size of pipe string
- //| Returns:
- //| Nothing
- //*---------------------------------------------------------------------------------
- void GetPipeNames(LPSTR szPipes, int size)
- {
- if(!GetPrivateProfileString(szPIPES, NULL, NULL, szPipes, size,
- szLABINI))
- *szPipes = ' ';
- }
- //*---------------------------------------------------------------------------------
- //| PromptForFontName:
- //| This function will prompt the user for a font style and name.
- //| Parms:
- //| in szPipes Pointer to string to hold names
- //| in size Maximum size of pipe string
- //| Returns:
- //| Nothing
- //*---------------------------------------------------------------------------------
- void PromptForFontName(HWND hwndOwner)
- {
- CHOOSEFONT cf;
- LOGFONT lf;
- HWND fHwnd=GetFocus();
- char lpszStyle[LF_FACESIZE];
- memset(&lf, 0, sizeof(LOGFONT));
- memset(&cf, 0, sizeof(CHOOSEFONT));
- cf.lpLogFont = (LOGFONT FAR *)&lf;
- cf.lpszStyle = (LPSTR)lpszStyle;
- GetDefaultFont(&lf);
- cf.lStructSize = sizeof(CHOOSEFONT);
- cf.hwndOwner = hwndOwner;
- cf.Flags = CF_SCREENFONTS | CF_EFFECTS | CF_INITTOLOGFONTSTRUCT;
- cf.rgbColors = GetDefaultRGB();
- cf.nFontType = SCREEN_FONTTYPE;
- GetFontStyle(cf.lpszStyle, LF_FACESIZE);
- if(ChooseFont(&cf)) {
- SetDefaultFont(&lf);
- SetDefaultRGB(cf.rgbColors);
- SetFontStyle(cf.lpszStyle);
- }
- if(fHwnd)
- SetFocus(fHwnd);
- }