¿øÇü |
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
|