| ¿øÇü |
BOOL GetOpenFileName(LPOPENFILENAME lpofn); |
| MFC ¿øÇü |
ÇØ´çÇÏ´Â ÇÔ¼ö ¾øÀ½ |
| Àμö |
¢ºlpofn : ÆÄÀÏ ¿±â °øÅë ´ëÈ»óÀÚ ÃʱâÈ¿¡ »ç¿ëµÉ OPENFILENAME ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. ÀÌ ±¸Á¶Ã¼ÀÇ ´ëÈ»óÀÚÀÇ ¿É¼ÇÀ» ¼³Á¤ÇÑ ÈÄ GetOpenFileName ÇÔ¼ö¸¦ È£ÃâÇÏ¸ç »ç¿ëÀÚÀÇ ¼±Åà °á°úµµ ÀÌ ±¸Á¶Ã¼·Î ¸®ÅϹ޴´Ù. |
| ¸®ÅÏ |
»ç¿ëÀÚ°¡ È®ÀÎ(OK) ¹öưÀ» ´·¯ ÆÄÀÏÀ» ¼±ÅÃÇßÀ¸¸é 0ÀÌ ¾Æ´Ñ °ªÀÌ ¸®ÅÏµÇ¸ç ÆÄÀÏ ¼±ÅÃÀ» Ãë¼ÒÇ߰ųª ¿¡·¯°¡ ¹ß»ýÇßÀ¸¸é 0ÀÌ ¸®ÅϵȴÙ. ¿¡·¯ ¹ß»ý½Ã CommonDlgExtendedError ÇÔ¼ö·Î ¿¡·¯ Äڵ带 Á¶»çÇÒ ¼ö ÀÖÀ¸¸ç ´ÙÀ½ ¿¡·¯ Áß Çϳª°¡ ¸®ÅϵȴÙ. CDERR_DIALOGFAILURE |
| ¼³¸í |
ÆÄÀÏ ÀÔÃâ·ÂÀ» Çϱâ Àü¿¡ ´ë»ó ÆÄÀÏÀ» ÀԷ¹ޱâ À§ÇØ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼ö´Â lpofn ±¸Á¶Ã¼ÀÇ ¼³Á¤´ë·Î ÆÄÀÏ ¿±â °øÅë ´ëÈ»óÀÚ¸¦ ¿¾î ÁÖ¸ç »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆÄÀÏÀÇ ¿ÏÀü °æ·Î¸¦ ±¸Á¶Ã¼·Î ´Ù½Ã ¸®ÅÏÇØ ÁØ´Ù. ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ ¸ÕÀú ±¸Á¶Ã¼¿¡ ÃʱⰪÀ» ÀûÀýÇÏ°Ô ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÏ¸ç ¸®Åϰª°ú ±¸Á¶Ã¼ÀÇ °á°ú°ªÀ¸·Î »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆÄÀϸíÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÀԷ¹ÞÀº ÆÄÀϸíÀº ÀÌÈÄ CreateFile µîÀÇ ÇÔ¼ö·Î ¿¾î¼ ÀÔÃâ·Â¿¡ »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ÇϳªÀÇ ÆÄÀϸíÀ» ÀԷ¹޴ °¡Àå ÀϹÝÀûÀÎ ÆÄÀÏ ¿±â ¿¹Á¦ÀÌ´Ù.
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
OPENFILENAME OFN;
char lpstrFile[MAX_PATH]="";
char str[256];
char Mes[]="¸¶¿ì½º ¿ÞÂÊ ¹öưÀ» ´©¸£½Ê½Ã¿À";
switch(iMessage) {
case WM_LBUTTONDOWN:
memset(&OFN, 0, sizeof(OPENFILENAME));
OFN.lStructSize = sizeof(OPENFILENAME);
OFN.hwndOwner=hWnd;
OFN.lpstrFilter="Every File(*.*)\0*.*\0Text File\0*.txt;*.doc\0";
OFN.lpstrFile=lpstrFile;
OFN.nMaxFile=256;
if (GetOpenFileName(&OFN)!=0) {
wsprintf(str,"%s ÆÄÀÏÀ» ¼±ÅÃÇß½À´Ï´Ù.",OFN.lpstrFile);
MessageBox(hWnd,str,"ÆÄÀÏ ¿±â ¼º°ø",MB_OK);
}
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,Mes,lstrlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
OPENFILENAME ±¸Á¶Ã¼¸¦ ¼±¾ðÇϰí ÀÌ ±¸Á¶Ã¼ÀÇ ¸ðµç ¸â¹ö¸¦ 0À¸·Î ÃʱâÈÇØ ÁØ ÈÄ ÇʼöÀûÀ¸·Î ÇÊ¿äÇÑ ¸â¹ö¿¡¸¸ °ªÀ» ´ëÀÔÇØ ÁÖ¾ú´Ù. lpstrFile ¸â¹ö¿¡´Â »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆÄÀϸíÀ» ¸®ÅϹޱâ À§ÇÑ ÃæºÐÇÑ ±æÀÌÀÇ ¹öÆÛ Æ÷ÀÎÅ͸¦ ¹Ýµå½Ã ´ëÀÔÇØ ÁÖ¾î¾ß ÇÔÀ» À¯ÀÇÇϵµ·Ï ÇÏÀÚ. »ç¿ëÀÚ°¡ ÆÄÀÏÀ» ¼±ÅÃÇßÀ¸¸é lpstrFile ¸â¹ö¸¦ ÀÐ¾î ¾î¶² ÆÄÀÏÀ» ¼±ÅÃÇß´ÂÁö ¸Þ½ÃÁö ¹Ú½º·Î º¸¿©ÁØ´Ù. ÀÌ ¸â¹ö·Î ¸®ÅϵǴ °æ·Î´Â CreateFile ÇÔ¼ö¿¡ °ð¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÌ ´ëÈ»óÀÚ·Î º¹¼ö°³ÀÇ ÆÄÀϸíÀ» ÀԷ¹ްíÀÚ ÇÒ ¶§´Â OFN_ALLOWMULTISELECT Ç÷¡±×¸¦ ÁÖµÇ ÀÌ ¶§ OFN_EXPLORER Ç÷¡±×¸¦ °°ÀÌ ÁÖ¾î¾ß Ž»ö±â Çü½ÄÀÇ ´ëÈ»óÀÚ°¡ ¿¸°´Ù. ¼±ÅÃµÈ ÆÄÀϵéÀº lpstrFile ¹öÆÛ¿¡ ³Î ¹®ÀÚ·Î ±¸ºÐµÇ¾î Â÷·Ê´ë·Î ±â·ÏµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¹öÆÛ¸¦ °è¼Ó ÀÐÀ¸¸é µÈ´Ù. lpstrFile ¹öÆÛÀÇ ¼±µÎ¿¡´Â ÆÄÀϵéÀÇ Æú´õ°¡ ÀÖÀ¸¸ç µÎ¹øÂ° ÀÌÈÄ¿¡ ¼±ÅÃÇÑ ÆÄÀÏÀÇ À̸§¸¸ ³ª¿µÈ´Ù. º¹¼ö ¼±ÅÃµÈ ÆÄÀϵéÀ» ¸ðµÎ ÀúÀåÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ ±æÀÌÀÇ ¹öÆÛ¸¦ Á¦°øÇØ¾ß Çϴµ¥ NT 4.0°ú 2000ÀÌ»óÀÇ ANSI ¹öÀü¿¡¼´Â 32KÀÇ ¹öÆÛ ÇѰ谡 ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ÆÄÀÏ ¿±â ´ëÈ»óÀÚ·Î º¹¼ö°³ÀÇ ÆÄÀÏÀ» ¼±ÅÃ¹Þ¾Æ ¼±ÅÃÇÑ ÆÄÀϸíÀ» º¸¿©ÁØ´Ù.
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char Mes[]="¸¶¿ì½º ¿ÞÂÊ ¹öưÀ» ´©¸£½Ê½Ã¿À";
OPENFILENAME OFN;
char str[32000]="";
char lpstrFile[10000]="";
char *p;
char Name[MAX_PATH];
char szTmp[MAX_PATH];
int i=1;
switch(iMessage) {
case WM_LBUTTONDOWN:
memset(&OFN, 0, sizeof(OPENFILENAME));
OFN.lStructSize = sizeof(OPENFILENAME);
OFN.hwndOwner=hWnd;
OFN.lpstrFilter="¸ðµç ÆÄÀÏ(*.*)\0*.*\0";
OFN.lpstrFile=lpstrFile;
OFN.nMaxFile=10000;
OFN.Flags=OFN_EXPLORER | OFN_ALLOWMULTISELECT;
if (GetOpenFileName(&OFN)!=0) {
p=lpstrFile;
strcpy(Name, p);
if (*(p+strlen(Name)+1)==0) {
wsprintf(str,"%s ÆÄÀÏ Çϳª¸¸ ¼±ÅÃÇß½À´Ï´Ù",Name);
} else {
wsprintf(str,"%s µð·ºÅ丮¿¡ ÀÖ´Â ´ÙÀ½ ÆÄÀϵéÀÌ ¼±ÅõǾú½À´Ï´Ù"
"\r\n\r\n", Name);
for (;;) {
p=p+strlen(Name)+1;
if (*p==0)
break;
strcpy(Name,p);
wsprintf(szTmp,"%d¹øÂ° ÆÄÀÏ = %s \r\n",i++,Name);
strcat(str,szTmp);
}
}
MessageBox(hWnd,str,"¼±ÅÃÇÑ ÆÄÀÏ",MB_OK);
} else {
if (CommDlgExtendedError()==FNERR_BUFFERTOOSMALL) {
MessageBox(hWnd,"¹öÆÛ Å©±â°¡ ³Ê¹« ÀÛ½À´Ï´Ù","¿¡·¯",MB_OK);
}
}
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,Mes,strlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
lpstrFile ¹öÆÛ¿¡´Â 10000¹ÙÀÌÆ® Á¤µµÀÇ ºñ±³Àû ÃæºÐÇÑ ±æÀ̸¦ ÁÖ¾úÀ¸³ª ¸¹Àº ¼öÀÇ ÆÄÀÏÀ» ¼±ÅÃÇßÀ» °æ¿ì´Â ¸Þ¸ð¸® ºÎÁ· ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ ¿¡·¯´Â ¹Ýµå½Ã ó¸®ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
|
| Âü°íÇÔ¼ö |
SHBrowseForFolder : ÆÄÀÏ À̸§ ´ë½Å Æú´õ °æ·Î¸¦ ÀԷ¹޴´Ù. |
| Ç÷§Æû | 95ÀÌ»ó |
| ÂüÁ¶ |
|
|
written by http://www.winapi.co.kr
|