ÀÀ¿ë ÇÁ·Î±×·¥Àº µÎ Á¾·ùÀÇ ¹®¼, Áï »ç¿ëÀÚ°¡ ¸¸µå´Â ¹®¼¿Í ÀÀ¿ë ÇÁ·Î±×·¥ ÀÚü¿¡¼ ¸¸µå´Â ¹®¼·Î ÀÛµ¿ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº
SHGetFolderPath ¼Ð ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ¿Í ÀÀ¿ë ÇÁ·Î±×·¥¿¡ °ü·ÃµÈ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ À¯È¿ÇÑ Æú´õ À§Ä¡¸¦ °Ë»öÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀº °°Àº ÄÄÇ»Å͸¦ ¿©·¯ »ç¿ëÀÚ°¡ °øÀ¯ÇÏ´Â ±â´É°ú ºü¸¥ »ç¿ëÀÚ Àüȯ ±â´ÉÀ» Áö¿øÇØ¾ß ÇÏ´Â Windows XP ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼´Â ÇʼöÀûÀÔ´Ï´Ù.
ÀÌ ¹®¼¿¡¼´Â ¿Ã¹Ù¸¥ À§Ä¡¿¡ »ç¿ëÀÚ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¹æ¹ýÀ» ´ÙÀ½°ú °°Àº ´Ü°è·Î ¼³¸íÇÕ´Ï´Ù.
- Win32 ÀÀ¿ë ÇÁ·Î±×·¥À» ¸¸µì´Ï´Ù.
- ÆÄÀÏ ¸Þ´º¿¡ ´Ù¸¥ À̸§À¸·Î ÀúÀå ¿É¼ÇÀ» Ãß°¡ÇÕ´Ï´Ù.
- ¿Ã¹Ù¸¥ À§Ä¡¸¦ ±âº»°ªÀ¸·Î °®´Â Ç¥ÁØ ÆÄÀÏ ÀúÀå ´ëÈ »óÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù.
- ¿Ã¹Ù¸¥ ÆÄÀÏ ÀúÀå À§Ä¡¸¦ È®ÀÎÇÕ´Ï´Ù.
- »ç¿ëÀÚÀÇ ÀÌÀü ¼±Åà À§Ä¡¸¦ ÀúÀåÇÕ´Ï´Ù.
- »ç¿ëÀÚÀÇ ÀÌÀü ¼±Åà À§Ä¡¸¦ È®ÀÎÇÕ´Ï´Ù.
¶ÇÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â À§Ä¡¿Í ÀûÀýÇÑ À§Ä¡¿¡ ÀúÀåµÇ¾ú´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ýµµ ´ÙÀ½°ú °°Àº ´Ü°è·Î ¼³¸íÇÕ´Ï´Ù.
- ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ºÐ·ùÇÕ´Ï´Ù.
- ¿Ã¹Ù¸¥ À§Ä¡¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÕ´Ï´Ù.
- ·¹Áö½ºÆ®¸®¸¦ ½ÅÁßÇÏ°Ô »ç¿ëÇÕ´Ï´Ù.
¿ä±¸ »çÇ×
´ÙÀ½Àº ±ÇÀå Çϵå¿þ¾î, ¼ÒÇÁÆ®¿þ¾î, ³×Æ®¿öÅ© ÀÎÇÁ¶ó, ±â¼ú°ú Áö½Ä ¹× ¼ºñ½º ÆÑÀÔ´Ï´Ù.
- Windows XP Home Edition ¶Ç´Â Windows XP Professional
- Visual Studio .NET ¶Ç´Â Visual Studio ¹öÀü 6.0
- Win32 ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ß¿¡ ´ëÇÑ »çÀü Áö½Ä
Win32 ÀÀ¿ë ÇÁ·Î±×·¥ ¸¸µé±â
Visual Studio¸¦ ½ÃÀÛÇϰí SavingData¶ó´Â À̸§ÀÇ »õ·Î¿î Win32 ÀÀ¿ë ÇÁ·Î±×·¥À» ¸¸µì´Ï´Ù.
- Visual C++ 6.0¿¡¼ »ç¿ë °¡´ÉÇÑ ÇÁ·ÎÁ§Æ® Çü½Ä ¸ñ·Ï¿¡¼ Win32 ApplicationÀ» ´©¸¥ ´ÙÀ½ A typical "Hello World" application ¿É¼ÇÀ» ¼±ÅÃÇÕ´Ï´Ù.
- Visual Studio .NETÀÇ ÇÁ·ÎÁ§Æ® Çü½Ä¿¡¼ Visual C++ ÇÁ·ÎÁ§Æ®¸¦ ´©¸¥ ´ÙÀ½ ÅÛÇø´¿¡¼ Win32 ÇÁ·ÎÁ§Æ®¸¦ ´©¸¨´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ ¸¶¹ý»ç¿¡ ³ªÅ¸³ª´Â ±âº» ÀÀ¿ë ÇÁ·Î±×·¥ ¼³Á¤À» ±×´ë·Î Àû¿ëÇÕ´Ï´Ù.
ÆÄÀÏ ¸Þ´º¿¡ ´Ù¸¥ À̸§À¸·Î ÀúÀå ¿É¼Ç Ãß°¡
- ¸®¼Ò½º ºä¸¦ ´©¸¥ ´ÙÀ½ IDC_SAVINGDATA¸¦ µÎ ¹ø ´©¸¨´Ï´Ù.
- ÆÄÀÏ ¸Þ´º¿¡ ´Ù¸¥ À̸§À¸·Î ÀúÀå ¸Þ´º ¿É¼ÇÀ» Ãß°¡ÇÕ´Ï´Ù. ¸Þ´º Ç׸ñÀÇ ID·Î IDM_FILE_SAVEAS¸¦ »ç¿ëÇÕ´Ï´Ù.
- SavingData.cppm ³»¿¡¼ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ WndProc â ÇÁ·Î½ÃÀú¸¦ ã°í WM_COMMAND ¼½¼Ç ³»¿¡ ´Ù¸¥ À̸§À¸·Î ÀúÀå ¸Þ´º ¿É¼ÇÀ» ó¸®ÇÏ´Â »õ·Î¿î case ¹®À» Ãß°¡ÇÕ´Ï´Ù. ´ÙÀ½ Àý¿¡¼ ¸¸µå´Â OnFileSaveAs ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù.
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections.
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
case IDM_FILE_SAVEAS:
OnFileSaveAs();
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
¿Ã¹Ù¸¥ À§Ä¡¸¦ ±âº»°ªÀ¸·Î °®´Â Ç¥ÁØ ÆÄÀÏ ÀúÀå ´ëÈ »óÀÚ »ç¿ë
»ç¿ëÀÚ°¡ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ
ÆÄÀÏ ÀúÀå(¶Ç´Â
ÆÄÀÏ ¿±â) ´ëÈ »óÀÚ¸¦ óÀ½À¸·Î Ç¥½ÃÇÏ¸é ´ëÈ »óÀÚ´Â »ç¿ëÀÚÀÇ ³» ¹®¼ Æú´õ(¶Ç´Â À̹ÌÁö µ¥ÀÌÅÍÀÇ °æ¿ì My Pictures ¹× ¿Àµð¿À ÆÄÀÏÀÇ °æ¿ì My Music Æú´õ)°¡ ±âº»°ªÀÌ µÇ¾î¾ß ÇÕ´Ï´Ù.
Âü°í: ½ÇÁ¦ À§Ä¡¸¦ È®½ÅÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÀ¿ë ÇÁ·Î±×·¥ ³»¿¡ °æ·Î¸¦ Çϵå ÄÚµùÇØ¼´Â ¾ÈµË´Ï´Ù. ¿¹¸¦ µé¾î, °ü¸®ÀÚ°¡ ³» ¹®¼ Æú´õ¸¦ ³×Æ®¿öÅ©»óÀ¸·Î À§Ä¡ º¯°æÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
- SavingData.cpp ¸Ç À§¿¡ ´ÙÀ½ Æ÷ÇÔ ¹®À» Ãß°¡ÇÕ´Ï´Ù.
#include <commdlg.h> // for GetSaveFileName
#include <shlobj.h> // for SHGetFolderPath
- OnFileSaveAs ÇÔ¼ö¿¡ ´ëÇØ ´ÙÀ½ ÇÁ·ÎÅäŸÀÔÀ» Ãß°¡ÇÕ´Ï´Ù.
- »õ·Î¿î OnFileSaveAs ÇÔ¼ö¸¦ ¸¸µì´Ï´Ù. ÀÌ ÇÔ¼ö ³»¿¡¼ CSIDL_MYPICTURESCSIDL ½Äº°ÀÚ¿Í ÇÔ²² SHGetFolderPath ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ±×¸² µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¿Ã¹Ù¸¥ Æú´õ À§Ä¡¸¦ °Ë»öÇÕ´Ï´Ù. ÀÌ Æú´õ À§Ä¡¸¦ GetSaveFileName ÇÔ¼ö¿¡ Àü´ÞÇÏ¿© Ç¥ÁØ ÆÄÀÏ ÀúÀå ´ëÈ »óÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù.
ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù.
void OnFileSaveAs()
{
OPENFILENAME openFile;
TCHAR szPath[MAX_PATH];
// Initialize OPENFILENAME structure.
ZeroMemory( &openFile, sizeof(OPENFILENAME) );
openFile.lStructSize = sizeof(OPENFILENAME);
// Default to My Pictures. First, get its path.
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_MYPICTURES,
NULL, 0, szPath ) ) )
{
// Set lpstrInitialDir to the path that SHGetFolderPath obtains.
// This causes GetSaveFileName to point to the My Pictures folder.
openFile.lpstrInitialDir = szPath;
}
// Display the standard File Save dialog box, defaulting to My Pictures.
if ( GetSaveFileName( &openFile ) == TRUE )
{
// User clicks the Save button.
// Save the file
}
else
{
// User cancels the File Save dialog box.
}
}
¿Ã¹Ù¸¥ ÆÄÀÏ ÀúÀå À§Ä¡ È®ÀÎ
- F5 ۸¦ ´·¯ ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇÕ´Ï´Ù.
- ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í ÆÄÀÏ ¸Þ´º¿¡¼ ´Ù¸¥ À̸§À¸·Î ÀúÀåÀ» ´©¸¨´Ï´Ù.
- Ç¥ÁØ ÆÄÀÏ ÀúÀå ´ëÈ »óÀÚÀÇ ±âº» À§Ä¡´Â CSIDL_MYPICTURESÀÌ ÀúÀåÇÑ My Pictures Æú´õÀÔ´Ï´Ù.
- Ãë¼Ò¸¦ ´·¯ ´ëÈ »óÀÚ¸¦ ´Ý°í ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ý½À´Ï´Ù.
»ç¿ëÀÚÀÇ ÀÌÀü ¼±Åà À§Ä¡ ÀúÀå
ÆÄÀÏ ÀúÀå(¶Ç´Â
ÆÄÀÏ ¿±â) ´ëÈ »óÀÚ¸¦ °è¼Ó »ç¿ëÇÏ´Â °æ¿ì ´ëÈ »óÀÚ´Â »ç¿ëÀÚ°¡ ÀÌÀü¿¡ ¼±ÅÃÇÑ À§Ä¡¸¦ ±âº»ÀûÀ¸·Î Ç¥½ÃÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
OPENFILENAME ±¸Á¶ ³»¿¡ ÃÊ±â Æú´õ À§Ä¡¸¦ Á¦°øÇÏÁö ¾ÊÀº °æ¿ì
GetSaveFileName(¹×
GetOpenFileName)Àº ³» ¹®¼ Æú´õ¸¦ °¡¸®Å°´Â Ç¥ÁØ
ÆÄÀÏ ÀúÀå ¶Ç´Â
ÆÄÀÏ ¿±â ´ëÈ »óÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó, »ç¿ëÀÚ°¡ ÀÌÀü¿¡
ÆÄÀÏ ÀúÀå ¶Ç´Â
ÆÄÀÏ ¿±â ´ëÈ »óÀÚ¸¦ »ç¿ëÇÒ ¶§ ±âº»°ªÀÌ ¾Æ´Ñ Æú´õ¸¦ ¼±ÅÃÇÑ °æ¿ì ÇÔ¼ö´Â ÀÌÀü¿¡ »ç¿ëÇÑ Æú´õ¸¦ ÀÚµ¿À¸·Î Ç¥½ÃÇÕ´Ï´Ù.
»ç¿ëÀÚ°¡ óÀ½ ÆÄÀÏÀ» ¿°Å³ª ÀúÀåÇÒ ¶§´Â My Pictures¿Í °°ÀÌ ±âº» Æú´õ À§Ä¡¸¦ Ç¥½ÃÇÏ°Ô Çϰí, ÀÌÀü¿¡ ÆÄÀÏÀ» ¿°í ÀúÀåÇÑ ÀûÀÌ ÀÖÀ¸¸é ÇØ´ç À§Ä¡¸¦ ±â¾ïÇÏ¿© Ç¥½ÃÇϵµ·Ï ÇÏ·Á¸é ºÎ¿ï º¯¼ö¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ ÀúÀåÀ̳ª ÆÄÀÏ ¿±â ÀÛ¾÷ÀÌ Ã³À½ ¼öÇàµÇ´Â °ÍÀÎÁö ¿©ºÎ¸¦ ÃßÀûÇØ¾ß ÇÕ´Ï´Ù.
- OnFileSaveAs ÇÔ¼ö¿¡ bFirstSave¶ó´Â À̸§ÀÇ static BOOL º¯¼ö¸¦ ¸¸µé°í TRUE·Î ÃʱâÈÇÕ´Ï´Ù.
- bFirstSave°¡ TRUEÀÎ °æ¿ì¿¡¸¸ SHGetFolderPath¸¦ È£ÃâÇϰí OPENFILENAME ±¸Á¶ÀÇ lpstrInitialDir ¸â¹ö¸¦ ¼³Á¤Çϵµ·Ï OnFileSaveAs ³»ÀÇ Äڵ带 ¼öÁ¤ÇÕ´Ï´Ù .
- »ç¿ëÀÚ°¡ ÆÄÀÏ ÀúÀå ´ëÈ »óÀÚ¿¡¼ ÀúÀåÀ» ´©¸£¸é bFirstSave¸¦ FALSE·Î ¼³Á¤ÇÕ´Ï´Ù.
ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù.
void OnFileSaveAs()
{
OPENFILENAME openFile;
TCHAR szPath[MAX_PATH];
static BOOL bFirstSave = TRUE;
// Initialize OPENFILENAME structure.
ZeroMemory( &openFile, sizeof(OPENFILENAME) );
openFile.lStructSize = sizeof(OPENFILENAME);
// The first time the user saves a document, default to My Pictures.
if ( TRUE == bFirstSave )
{
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_MYPICTURES,
NULL, 0, szPath ) ) )
{
// Set lpstrInitialDir to the path that SHGetFolderPath obtains.
// This causes GetSaveFileName to point to the My Pictures folder.
openFile.lpstrInitialDir = szPath;
}
}
// Display standard File Save dialog box, defaulting to My Pictures
// or the user's previously selected location.
if ( GetSaveFileName( &openFile ) == TRUE )
{
// User clicks Save.
// Save the file.
bFirstSave = FALSE;
}
else
{
// User cancels the File Save dialog box.
}
}
»ç¿ëÀÚÀÇ ÀÌÀü ¼±Åà À§Ä¡ È®ÀÎ
- ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇϰí ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
- ÆÄÀÏ ¸Þ´º¿¡¼ ´Ù¸¥ À̸§À¸·Î ÀúÀåÀ» ´©¸¨´Ï´Ù.
- My Pictures Æú´õ¿¡¼ ³» ¹®¼ Æú´õ·Î À̵¿ÇÏ°í ÆÄÀÏÀ» ¼±ÅÃÇÑ ´ÙÀ½ ÀúÀåÀ» ´©¸¨´Ï´Ù.
- ÆÄÀÏ ¸Þ´º¿¡¼ ´Ù¸¥ À̸§À¸·Î ÀúÀåÀ» ´Ù½Ã ´©¸¨´Ï´Ù.
- ´ëÈ »óÀÚÀÇ ±âº» À§Ä¡°¡ ÀÌÀü¿¡ ¼±ÅÃÇÑ À§Ä¡(ÀÌ °æ¿ì ³» ¹®¼ Æú´õ)ÀÎÁö È®ÀÎÇÕ´Ï´Ù.
- Ãë¼Ò¸¦ ´·¯ ´ëÈ »óÀÚ¸¦ ´Ý°í ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ý½À´Ï´Ù.
- ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í ÆÄÀÏ ¸Þ´º¿¡¼ ´Ù¸¥ À̸§À¸·Î ÀúÀåÀ» ´©¸¨´Ï´Ù.
- ´ëÈ »óÀÚÀÇ ±âº» À§Ä¡°¡ ´Ù½Ã My Pictures Æú´õ°¡ µÇ¾ú´ÂÁö È®ÀÎÇÕ´Ï´Ù.
- ´ëÈ »óÀÚ¸¦ ´Ý°í ÀÀ¿ë ÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅÍ ºÐ·ù
ÀÀ¿ë ÇÁ·Î±×·¥ °ü·Ã µ¥ÀÌÅÍ(Àӽà ÆÄÀÏ, »ç¿ëÀÚ ±âº» ¼³Á¤, ÀÀ¿ë ÇÁ·Î±×·¥ ±¸¼º ÆÄÀÏ µî)´Â ³» ¹®¼ Æú´õ¿¡ ÀúÀåÇØ¼´Â ¾ÈµË´Ï´Ù. ´ë½Å Windows ·¹Áö½ºÆ®¸®(64KB¸¦ ÃʰúÇÏÁö ¾Ê´Â µ¥ÀÌÅÍÀÇ °æ¿ì)ÀÇ ÀûÀýÇÑ À§Ä¡³ª À¯È¿ÇÑ Application Data Æú´õ¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ °ü·Ã ÆÄÀÏÀ» »ç¿ëÇϽʽÿÀ.
¿©·¯ »ç¶÷ÀÌ ¼·ÎÀÇ µ¥ÀÌÅÍ¿Í ¼³Á¤À» ¼Õ»ó½ÃŰ°Å³ª µ¤¾î¾²Áö ¾Ê°í °°Àº ÄÄÇ»Å͸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¿Ã¹Ù¸¥ À§Ä¡¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅÍ¿¡ °¡Àå ÀûÇÕÇÑ À§Ä¡¸¦ È®ÀÎÇÏ·Á¸é ´ÙÀ½ ¹üÁÖ¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ºÐ·ùÇÕ´Ï´Ù.
- °³º° »ç¿ëÀÚ(·Î¹Ö): ÀÌ ¹üÁִ ƯÁ¤ »ç¿ëÀÚ¿Í °ü·ÃµÈ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ¸»ÇÏ¸ç »ç¿ëÀÚ°¡ µµ¸ÞÀÎ ³»ÀÇ ¾î¶² ÄÄÇ»Å͸¦ »ç¿ëÇϵçÁö µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù(¿¹: »ç¿ëÀÚ ÁöÁ¤ »çÀü). ÀÌ ¼³Á¤Àº µµ¸ÞÀΠȯ°æ¿¡¼ ½ÇÇàÇϵµ·Ï µðÀÚÀεÇÁö ¾ÊÀº ÀÀ¿ë ÇÁ·Î±×·¥¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.
- °³º° »ç¿ëÀÚ(ºñ ·Î¹Ö): ÀÌ ¹üÁִ ƯÁ¤ »ç¿ëÀÚ¿Í °ü·ÃµÈ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ¸»ÇÏÁö¸¸ ´ÜÀÏ ÄÄÇ»ÅÍ¿¡¼¸¸ µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù(¿¹: »ç¿ëÀÚ ÁöÁ¤ ¸ð´ÏÅÍ ÇØ»óµµ).
- °³º° ÄÄÇ»ÅÍ(ºñ ·Î¹Ö, ºñ »ç¿ëÀÚ °ü·Ã): ÀÌ ¹üÁִ ƯÁ¤ ÄÄÇ»ÅÍÀÇ ¸ðµç »ç¿ëÀÚ¿¡°Ô Àû¿ëµÇ´Â ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ¸»ÇÕ´Ï´Ù(¿¹: ÀÀ¿ë ÇÁ·Î±×·¥ »çÀü, ·Î±× ÆÄÀÏ ¶Ç´Â Àӽà ÆÄÀÏ).
ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ¿Ã¹Ù¸¥ À§Ä¡¿¡ ÀúÀå
SHGetFolderPath ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¿Ã¹Ù¸¥ Application Data Æú´õ¸¦ °Ë»öÇÕ´Ï´Ù. ÀÌ Æú´õ¿¡ Á÷Á¢ ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÏÁö ¸¶½Ê½Ã¿À. ´ë½Å
PathAppend ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©
SHGetFolderPath°¡ ¹ÝȯÇÏ´Â °æ·Î¿¡ ÇÏÀ§ Æú´õ¸¦ Ãß°¡ÇϽʽÿÀ. ¹Ýµå½Ã ´ÙÀ½ Çü½ÄÀ» »ç¿ëÇϽʽÿÀ.
Company Name\Product Name\Product Version
¿¹¸¦ µé¾î, Àüü °æ·Î¿¡ ´ëÇÑ °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù.
\Documents and Settings\All Users\Application Data\My Company\My Product\1.0
¿Ã¹Ù¸¥ Application Data Æú´õ¸¦ ãÀ¸·Á¸é ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅÍÀÇ ¹üÁÖ¿¡ ±â¹ÝÇÏ¿© ÀûÀýÇÑ
CSIDL °ªÀ» Àü´ÞÇÕ´Ï´Ù.
- °³º° »ç¿ëÀÚ(·Î¹Ö) µ¥ÀÌÅÍÀÇ °æ¿ì CSIDL_APPDATA °ªÀ» »ç¿ëÇÕ´Ï´Ù. ±âº»°ªÀº ´ÙÀ½ °æ·ÎÀÔ´Ï´Ù.
\Documents and Settings\< User Name >\Application Data
- °³º° »ç¿ëÀÚ(ºñ ·Î¹Ö) µ¥ÀÌÅÍÀÇ °æ¿ì CSIDL_LOCAL_APPDATA °ªÀ» »ç¿ëÇÕ´Ï´Ù. ±âº»°ªÀº ´ÙÀ½ °æ·ÎÀÔ´Ï´Ù.
\Documents and Settings\< User Name >\Local Settings\Application Data
- °³º° ÄÄÇ»ÅÍ(ºñ ·Î¹Ö, ºñ »ç¿ëÀÚ °ü·Ã) µ¥ÀÌÅÍÀÇ °æ¿ì CSIDL_COMMON_APPDATA °ªÀ» »ç¿ëÇÕ´Ï´Ù. ±âº»°ªÀº ´ÙÀ½ °æ·ÎÀÔ´Ï´Ù.
\Documents and Settings\All Users\Application Data
´ÙÀ½ ÄÚµå´Â
CSIDL_COMMON_APPDATA ¾Æ·¡¿¡ ÀÖ´Â Àӽà ·Î±× ÆÄÀÏÀ» ¿©´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
void CreateTemporaryFile()
{
TCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA,
NULL, 0, szPath ) ) )
{
TCHAR szTempFileName[MAX_PATH];
// Append product-specific path.
PathAppend( szPath, "\\My Company\\My Product\\1.0\\" );
// Generate a temporary file name within this folder.
if (GetTempFileName( szPath,
"PRE",
0,
szTempFileName ) != 0 )
{
HANDLE hFile = NULL;
// Open the file.
if (( hFile = CreateFile( szTempFileName,
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL )) != INVALID_HANDLE_VALUE )
{
// Write temporary data (code omitted).
CloseHandle( hFile );
}
}
}
} ½ÅÁßÇÑ ·¹Áö½ºÆ®¸® »ç¿ë ¹æ¹ý
°æ°í: ·¹Áö½ºÆ®¸® ÆíÁý±â¸¦ À߸ø »ç¿ëÇÏ¸é ½É°¢ÇÑ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¸ç ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ¿î¿µ üÁ¦¸¦ ´Ù½Ã ¼³Ä¡ÇØ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Microsoft´Â ·¹Áö½ºÆ®¸® ÆíÁý±â¸¦ À߸ø »ç¿ëÇÏ¿© ¹ß»ýÇÏ´Â ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÀ» º¸ÁõÇÏÁö ¾Ê½À´Ï´Ù. ·¹Áö½ºÆ®¸® ÆíÁý±âÀÇ »ç¿ë¿¡ µû¸¥ ¸ðµç Ã¥ÀÓÀº »ç¿ëÀÚ¿¡°Ô ÀÖ½À´Ï´Ù.
·¹Áö½ºÆ®¸®¸¦ ÆíÁýÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ·¹Áö½ºÆ®¸® ÆíÁý±â(Regedit.exe)ÀÇ "Ű ¹× °ª º¯°æ" µµ¿ò¸» Ç׸ñ ¶Ç´Â Regedt32.exeÀÇ "·¹Áö½ºÆ®¸®ÀÇ Á¤º¸ Ãß°¡ ¹× »èÁ¦" ¹× "·¹Áö½ºÆ®¸® µ¥ÀÌÅÍ ÆíÁý" µµ¿ò¸» Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ. ·¹Áö½ºÆ®¸®¸¦ ÆíÁýÇϱâ Àü¿¡ ¸ÕÀú ¹é¾÷ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ Windows NT ¶Ç´Â Windows 2000À» ½ÇÇàÇÏ´Â °æ¿ì ERD(ÀÀ±Þ º¹±¸ µð½ºÅ©)¸¦ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÕ´Ï´Ù.
¶ÇÇÑ ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏ¿© Å©±â°¡ ÀÛÀº ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. 64KB¸¦ ÃʰúÇÏ´Â µ¥ÀÌÅÍÀÇ °æ¿ì Application Data Æú´õ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¶§ ´ÙÀ½ °¡À̵带 ÁؼöÇϽʽÿÀ.
¹®Á¦ ÇØ°á
- ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Windows XP¿Í ±× ÀÌÀü ¹öÀüÀÇ Windows¿¡¼ ½ÇÇàµÇµµ·Ï ÇÏ·Á¸é Ç×»ó Shfolder.dll¿¡ ÀÖ´Â SHGetFolderPath ±¸Çö¿¡ ¿¬°áÇØ¾ß ÇÕ´Ï´Ù. Windows XP´Â Shell32.dll¿¡ SHGetFolderPath¸¦ Æ÷ÇÔÇϰí ÀÖÁö¸¸ ÀÌÀü ¹öÀü Windows´Â ÀÌ µ¿Àû ¿¬°á ¶óÀ̺귯¸®(DLL) ³»¿¡¼ ÇÔ¼ö¸¦ Áö¿øÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
- Shfolder.dllÀº ÀçºÐ¹è °¡´ÉÇÑ ±¸¼º ¿ä¼ÒÀ̸ç ÀÀ¿ë ÇÁ·Î±×·¥°ú ÇÔ²² ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.
- ³» ¹®¼ Æú´õ³ª ´Ù¸¥ ½Ã½ºÅÛ Æú´õ¿¡ ´ëÇÑ Á¤½Ä °æ·Î¸¦ ÃÖ±Ù »ç¿ëÇÑ ÆÄÀÏ ¸ñ·Ï°ú °°Àº ÀÀ¿ë ÇÁ·Î±×·¥ °ü·Ã À§Ä¡¿¡ ÀúÀåÇÏÁö ¸¶½Ê½Ã¿À. »ç¿ëÀÚ³ª °ü¸®ÀÚ°¡ ÇØ´ç ÀÀ¿ë ÇÁ·Î±×·¥À» ¿¬¼ÓÀûÀ¸·Î »ç¿ëÇÏ¸é¼ ÀÌµé Æú´õÀÇ À§Ä¡¸¦ º¯°æÇÒ ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù.
SHGetFolderPath°¡ ½Äº°ÇÒ ¼ö ÀÖ´Â Æú´õÀÇ ÁýÇÕ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Microsoft Platform SDK(¼ÒÇÁÆ®¿þ¾î °³¹ß ŰƮ) ¼³¸í¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
¼Ð ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MSDN À¥ »çÀÌÆ®¸¦ ÂüÁ¶ÇϽʽÿÀ.
Visual C++ .NET¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Usenet ´º½º ±×·ìÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ Visual C++ .NET Áö¿ø ¼¾Å͸¦ ¹æ¹®ÇϽʽÿÀ.
±â¼ú ÀÚ·á: 310294 - ¸¶Áö¸· °ËÅä: 2002³â 4¿ù 17ÀÏ ¼ö¿äÀÏ - ¼öÁ¤: 1.1
º» ¹®¼ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
- Microsoft Visual C++ .NET 2002 Standard Edition?À»(¸¦) ´ÙÀ½°ú ÇÔ²² »ç¿ëÇßÀ» ¶§
- Microsoft Windows XP Professional
| kbhowtomaster kbnewsgrouplink KB310294 |