/** * 設定書き込み * @param[in] lpPath パス * @param[in] lpTitle タイトル * @param[in] lpTable 設定テーブル * @param[in] nCount 設定テーブル アイテム数 */ void ini_write(LPCTSTR lpPath, LPCTSTR lpTitle, const PFTBL* lpTable, UINT nCount) { const PFTBL* p = lpTable; const PFTBL* pTerminate = p + nCount; while (p < pTerminate) { if (!(p->itemtype & PFFLAG_RO)) { TCHAR szWork[512]; szWork[0] = '\0'; LPCTSTR lpSet = szWork; switch(p->itemtype & PFTYPE_MASK) { case PFTYPE_STR: lpSet = static_cast<LPCTSTR>(p->value); break; case PFTYPE_BOOL: lpSet = (*(static_cast<const UINT8*>(p->value))) ? str_true : str_false; break; case PFTYPE_BITMAP: lpSet = (bitmapget(p->value, p->arg)) ? str_true : str_false; break; case PFTYPE_BIN: binget(szWork, _countof(szWork), p->value, p->arg); break; case PFTYPE_SINT8: wsprintf(szWork, str_d, *(static_cast<const SINT8*>(p->value))); break; case PFTYPE_SINT16: wsprintf(szWork, str_d, *(static_cast<const SINT16*>(p->value))); break; case PFTYPE_SINT32: wsprintf(szWork, str_d, *(static_cast<const SINT32*>(p->value))); break; case PFTYPE_UINT8: wsprintf(szWork, str_u, *(static_cast<const UINT8*>(p->value))); break; case PFTYPE_UINT16: wsprintf(szWork, str_u, *(static_cast<const UINT16*>(p->value))); break; case PFTYPE_UINT32: wsprintf(szWork, str_u, *(static_cast<const UINT32*>(p->value))); break; case PFTYPE_HEX8: wsprintf(szWork, str_x, *(static_cast<const UINT8*>(p->value))); break; case PFTYPE_HEX16: wsprintf(szWork, str_x, *(static_cast<const UINT16*>(p->value))); break; case PFTYPE_HEX32: wsprintf(szWork, str_x, *(static_cast<const UINT32*>(p->value))); break; default: lpSet = NULL; break; } if (lpSet) { ::WritePrivateProfileString(lpTitle, p->item, lpSet, lpPath); } } p++; } }
void ini_write(const OEMCHAR *path, const OEMCHAR *title, const PFTBL *tbl, UINT count) { const PFTBL *p; const PFTBL *pterm; const OEMCHAR *set; OEMCHAR work[512]; p = tbl; pterm = tbl + count; while(p < pterm) { if (!(p->itemtype & PFFLAG_RO)) { work[0] = '\0'; set = work; switch(p->itemtype & PFTYPE_MASK) { case PFTYPE_STR: set = (OEMCHAR *)p->value; break; case PFTYPE_BOOL: set = (*((UINT8 *)p->value))?str_true:str_false; break; case PFTYPE_BITMAP: set = (bitmapget((UINT8 *)p->value, p->arg))? str_true:str_false; break; case PFTYPE_BIN: binget(work, NELEMENTS(work), (UINT8 *)p->value, p->arg); break; case PFTYPE_SINT8: OEMSPRINTF(work, str_d, *((SINT8 *)p->value)); break; case PFTYPE_SINT16: OEMSPRINTF(work, str_d, *((SINT16 *)p->value)); break; case PFTYPE_SINT32: OEMSPRINTF(work, str_d, *((SINT32 *)p->value)); break; case PFTYPE_UINT8: OEMSPRINTF(work, str_u, *((UINT8 *)p->value)); break; case PFTYPE_UINT16: OEMSPRINTF(work, str_u, *((UINT16 *)p->value)); break; case PFTYPE_UINT32: OEMSPRINTF(work, str_u, *((UINT32 *)p->value)); break; case PFTYPE_HEX8: OEMSPRINTF(work, str_x, *((UINT8 *)p->value)); break; case PFTYPE_HEX16: OEMSPRINTF(work, str_x, *((UINT16 *)p->value)); break; case PFTYPE_HEX32: OEMSPRINTF(work, str_x, *((UINT32 *)p->value)); break; default: set = NULL; break; } if (set) { WritePrivateProfileString(title, p->item, set, path); } } p++; } }