¿ì¼± ÅøÆÁÀ» ´Þ±â À§ÇØ, ÅøÆÁÀ» ¾Ë¾Æ¼ ó¸®ÇØ ÁÖ´Â CToolTipCtrlÀ̶ó´Â Ŭ·¡½º·Î °´Ã¼¸¦ Çϳª ¸¸µì´Ï´Ù.
Áï, ´ÙÀ̾ó·Î±×ÀÇ Çì´õ ÆÄÀÏ¿¡¼, ´ÙÀ̾ó·Î±× Ŭ·¡½º ¾È¿¡ ´ÙÀ½°ú °°Àº º¯¼ö¸¦ ¸¸µé¸é µÇ°ÚÁÒ.
CToolTipCtrl m_ToolTip;
±×¸®°í ´ÙÀ̾ó·Î±×ÀÇ OnInitDialog()¿¡¼ ¿øÇϽô ¹öÆ°À̳ª, ÄÁÆ®·ÑµéÀ» ÀÌ ÅøÆÁ º¯¼ö¿¡ ÀÔ·ÂÇÏ½Ã¸é µË´Ï´Ù.
À̶§, CToolTipCtrlÀÇ AddTool()À̶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇϰԵ˴ϴÙ.
ÀÌ ÇÔ¼ö¸¦ µµ¿ò¸»¿¡¼ ã¾Æº¸¸é ´ÙÀ½°ú °°ÀÌ ³ª¿É´Ï´Ù.
BOOL AddTool( CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
LPCRECT
lpRectTool = NULL, UINT nIDTool = 0 );
¿©±â¼ ´Ù¸¥ °Ç º¼ °Å ¾ø±¸, ù¹ø° °Í°ú µÎ¹ø° °Í¸¸ º¸½Ã¸é µË´Ï´Ù.
ù¹ø° ÀÎÀÚ´Â, ÅøÆÁÀ» ´Þ°í ½ÍÀº ÄÁÆ®·ÑÀÇ À©µµ¿ì Æ÷ÀÎÅÍÀÔ´Ï´Ù.
µÎ¹ø° ÀÎÀÚ´Â, ÅøÆÁÀ¸·Î Ãâ·ÂÇÏ°í ½ÍÀº ÅؽºÆ®¿¹¿ä.
¸¸¾à ´ÙÀ̾ó·Î±×¿¡ IDC_TIPBUTTONÀ̶ó´Â ¹öÆ°ÀÌ ÀÖ°í, ÀÌ ¹öÆ°¿¡ "ÅøÆÁ"À̶ó´Â ÅøÆÁÀ» ³Ö°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÏ½Ã¸é µÇ°ÚÁÒ.
m_ToolTip.AddTool(GetDlgItem(IDC_TIPBUTTON), "ÅøÆÁ");
....
ÀÌ·¸°Ô ÇÑ ´ÙÀ½ ÇÑ°¡Áö ´õ ÇØÁà¾ß ÇÒ°Ô ÀÖ½À´Ï´Ù.
¸¶¿ì½ºÀÇ ¿òÁ÷ÀÓÀ» ÅøÆÁ º¯¼ö¿¡°Ô ¾Ë·ÁÁà¾ß Çϰŵç¿ä.
±×·¡¾ß ÅøÆÁÀ» Ãâ·ÂÇØ¾ß ÇÏ´Â Áö ÆÇ´ÜÇÒ°Å ¾Æ´Õ´Ï±î?
±×·¡¼ ´ÙÀ½°ú °°ÀÌ PreTranslateMessage()¶ó´Â ÇÔ¼ö¿¡ Äڵ带 ³ÖÀ¸½Ã¸é µË´Ï´Ù.
PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base
class
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MOUSEMOVE:
m_ToolTip.RelayEvent(pMsg);
break;
default:
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
//[*]-----------------------------------------------------[*]
#include "direct.h"
//[*]-----------------------------------------------------[*]
void ViewFileInfo(struct _finddata_t &info)
{
char CurrentDir[200];
GetCurrentDirectory(200,CurrentDir);
printf("%s\\%s ---- Size : %9ld Attrib : ",CurrentDir,
info.name, info.size);
printf((info.attrib & _A_RDONLY ) ? "R":"-");
printf((info.attrib & _A_SYSTEM ) ? "S":"-");
printf((info.attrib & _A_HIDDEN ) ? "H":"-");
printf((info.attrib & _A_ARCH ) ? "A":"-");
printf("\n");
}
//[*]-----------------------------------------------------[*]
void SearchFile(char *Ext, bool SubDirSearch = false)
{
struct _finddata_t c_file;
long hFile;
// ÈÀÏ °Ë»ç
if((hFile = _findfirst( Ext, &c_file )) != -1L )
{
ViewFileInfo(c_file);
while(!_findnext( hFile, &c_file
)) ViewFileInfo(c_file);
_findclose( hFile );
}
if(!SubDirSearch) return;
// ¼ºê µð·ºÅ丮 °Ë»ç
if((hFile = _findfirst("*.*", &c_file
)) != -1L ) {
if(c_file.attrib & _A_SUBDIR)
{
if(strcmp(c_file.name,".")!=0
&& strcmp(c_file.name, "..")!=0) {
_chdir(c_file.name);
SearchFile(Ext);
// Á¦±ÍÀû È£Ãâ ...
_chdir("..");
}
}
while(!_findnext( hFile, &c_file
)) {
if(c_file.attrib
& _A_SUBDIR) {
if(strcmp(c_file.name,".")!=0
&& strcmp(c_file.name, "..")!=0) {
_chdir(c_file.name);
SearchFile(Ext);
// Á¦±ÍÀû È£Ãâ ...
_chdir("..");
}
}
}
_findclose( hFile );
}
}
//[*]-----------------------------------------------------[*]
void test()
{
_chdir("F:\\");
SearchFile("*.cpp", true);
}
//[*]-----------------------------------------------------[*]
<´Ü ÇÑ°³ÀÇ ÇÁ·Î±×·¥¸¸ ½ÇÇàÇϱâ>
´ëºÎºÐÀÇ À©µµ ÇÁ·Î±×·¥Àº µ¿½Ã¿¡ ¿©·¯ °³ÀÇ ÀνºÅϽº°¡ ¼öÇàµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ´ÜÁö ÇÑ °³ÀÇ ÇÁ·Î±×·¥¸¸ ½ÇÇàÇØ¾ß ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ¹Ì ÀÚ½ÅÀÌ ½ÇÇàµÇ°í ÀÖ´ÂÁöÀÇ ¿©ºÎ´Â InitInstance()ÇÔ¼ö¿¡¼ üũÇÏ°í ±× °á°ú¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
BOOL CMyApp::InitInstance()
{
HANDLE hMutex = NULL;
hMutex = CreateMutex(NULL,TRUE,"PreventSecondInstanceRunning");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("À̹Ì
½ÇÇàµÇ°í ÀÖ½À´Ï´Ù.");
}
}
À©µµ¿¡¼´Â CreateMutex() ¶ó´Â °£´ÜÇÑ ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù.
¿©±â¼ 3¹ø° ÀÎÀÚÀÎ ¹®ÀÚ¿ÀÌ Áß¿äÇÕ´Ï´Ù.
"PreventSecondInstanceRunning"À» ºñ±³ÇÏ¿©
°°Àº ÇÁ·Î±×·¥ÀÎÁö È®ÀÎÇÏ°Ô µË´Ï´Ù. ÁÖÀÇÇÒ »çÇ×Àº "Running"°ú °°Àº
´Ü¼øÇÑ ¹®ÀÚ¿À» ÀÌ¿ëÇÑ´Ù¸é... ´Ù¸¥ ÇÁ·Î±×·¥µµ ÀÚ±â ÀÚ½ÅÀÎ
°Íó¾ö ¿ÀÀÎÇÒ¼ö ÀÖ½À´Ï´Ù.
´Ù¸§ÀÌ ¾Æ´Ï¶ó Á¦°¡ ¸¸µç ´ÙÀ̾ó·Î±×¿¡ ÆÄÀÏÀ» ã¾Æº¸±â¶ó´Â ÀÖ´Â ¹öÆ°À» ¸¸µé°í ½ÍÀºµ¥ ¾îµð¼ºÎÅÍ Á¢±ÙÀ» ÇÏÁÒ? À©µµ¿¡¼ µðÆúÆ®·Î Á¦°øÇØÁִ ã¾Æº¸±â±â´ÉÀÌ¿ä!
void CDirectorisFiles::FindFiles(TCHAR* pszPath)
{
WIN32_FIND_DATA fData;
TCHAR szDestTempPath[MAX_PATH];
memset(szDestTempPath, 0x00, MAX_PATH);
// ¼±ÅÃµÈ Æú´õ°¡ ·çÆ®À̸é
SetMakePath(pszPath, szDestTempPath);
HANDLE hFindFile = FindFirstFile(szDestTempPath,
&fData);
if(hFindFile == INVALID_HANDLE_VALUE) {
SPB_SystemMessage(GetLastError());
}
while(1) {
if(FindNextFile(hFindFile,
&fData)) {
if(!lstrcmp(fData.cFileName,
"..")) continue;
else
if( fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
TCHAR
szPath[MAX_PATH];
memset(szPath,
0x00, MAX_PATH);
int
nLen = lstrlen(pszPath);
if(nLen
<= 3)
wsprintf(szPath,
"%s%s", pszPath, fData.cFileName);
else
wsprintf(szPath,
"%s\\%s", pszPath, fData.cFileName);
FindFiles(szPath);
} else
{
//
TRACE("File Find Func : %s\\%s\n", pszPath, fData.cFileName);
//
µð·ºÅ丮 ¹× ¶ó
int
nLen1 = strlen(pszPath);
int
nLen2 = strlen(fData.cFileName);
m_pFileName[m_nFileCount].szDirName
= (TCHAR*)malloc(nLen1+1);
m_pFileName[m_nFileCount].szFile
= (TCHAR*)malloc(nLen2+1);
memset(m_pFileName[m_nFileCount].szDirName,
0x00, nLen1+1);
memset(m_pFileName[m_nFileCount].szFile,
0x00, nLen2+1);
lstrcpy(m_pFileName[m_nFileCount].szDirName,
pszPath);
lstrcpy(m_pFileName[m_nFileCount].szFile,
fData.cFileName);
m_nFileCount++;
}
}
else break;
}
FindClose(hFindFile);
}
À§ Äڵ带 Á¶±Ý¸¸ ¼öÁ¤ÇÏ¸é µË´Ï´Ù..
<¹ÙÅÁȸéÀÇ ¿ùÆäÀÌÆÛ º¯°æÇϱâ>
¹ÙÅÁȸéÀÇ ¿ùÆäÀÌÆÛ¸¦ ÇÁ·Î±×·¥ »ó¿¡¼ º¯°æÇÏ°íÀÚÇÕ´Ï´Ù. ·¹Áö½ºÆ®¸®°ªÀ»
º¯°æ½ÃÄѼ ¿ùÆäÀÌÆÛ¸¦ ¹Ù²åÁö¸¸ ½ÇÁ¦ ¸®ºÎÆÃÀü¿¡´Â Àû¿ëÀÌ µÇÁö ¾Ê½À´Ï´Ù.. ¾î¶»°Ô
ÇØ°áÇÒ ¹æ¹ýÀÌ ¾øÀ»±î¿ä..?
±×³É À̹ÌÁö ÆÄÀÏÀ» ƯÁ¤ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÇÁö¸¸ ¿ùÆäÀÌÆÛ·Î ÇÏ¸é ±×°Ô ¾ÈµÇ´õ¶ó±¸¿ä...
´ÙÀ½ ÇÔ¼ö¸¦ ¾²½Ã¸é µË´Ï´Ù.
BOOL SystemParametersInfo(
UINT uiAction, // system parameter to query or set
UINT uiParam, // depends on action to be taken
PVOID pvParam, // depends on action to be taken
UINT fWinIni // user profile update flag
);
»ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
CString szFileName = _T("c:\\windows\\test.bmp");
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, szFileName, SPIF_UPDATEINIFILE
| SPIF_SENDWININICHANGE);
<CString ÇüÀ» char* ÇüÀ¸·Î ¹Ù²Ù±â>
1.CString Ŭ·¡½ºÀÇ GetBuffer()´Â CStringÀ» char *·Î ¹Ù²ãÁÝ´Ï´Ù.
ex) CString strTemp = _T("test");
char *getTemp=NULL;
getTemp = malloc(strTemp.GetLength()+1);
strcpy(getTemp, strTemp.GetBuffer(strTemp.GetLength());
printf("°á°ú:%s\n", getTemp);
free(getTemp);
2. operator LPCTSTR ()µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.
ex) CString strTemp = _T("test");
char
*getTemp = (LPSTR)(LPCSTR)strData;
¾Æ·¡ÀÇ ÄÚµå´Â CFileDialog ÇÔ¼öÀÇ full option ¿¹Á¦ÀÔ´Ï´Ù. OnFileOpen() ÇÔ¼öÀÇ ÀϺκÐÀÌÁÒ. È®ÀåÀÚ°¡ 3ds ÀÎ ÆÄÀϸ¸ Ç¥½ÃµÇµµ·Ï ÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
static char BASED_CODE szFilter[] = "3ds ÆÄÀÏ (*.3ds)|*.3ds|";
CFileDialog FileDlg( TRUE, "3ds", NULL, OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT
| OFN_NOCHANGEDIR,
szFilter,
NULL );
FileDlg.DoModal();
<´ë¿ë·® ÆÄÀÏ Àбâ (ºü¸£°Ô...)>
ÆÄÀÏ Àбâ´Â ÀÚÁÖ »ç¿ëÇÏ½Ç °ÍÀε¥..
CFile::Read¸¦ »ç¿ëÇϸé.. 10MBÁ¤µµ µÇ´Â ÆÄÀÏÀ» ÀÐÀ¸¸é ¹«ÁøÀå ¿À·¡ °É·Á¼..
¸Þ¸ð¸® ¸Ê ÆÄÀÏÀ» ÀÌ¿ëÇÑ ÆÄÀÏ Àб⠹æ¹ýÀ» ¿Ã·Á µé¸³´Ï´Ù..
¸¹Àº ¿¹Á¦°¡ ³ª¿Â°ÍÀ¸·Î ¾ËÁö¸¸.. Ȥ½Ã... µµ ¸ô¶ó¼..
BOOL OpenFiles(LPCSTR lpszPathName)
{
DWORD dwFileSize;
HANDLE hFile, hFileMap;
LPVOID lpvFile;
hFile = ::CreateFile(lpszPathName, GENERIC_READ
, 0, NULL
OPEN_EXISTING,
FILE_ATTRIBUTTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE) {
//¿©±â¿¡¼
¿¡·¯ ¸Þ¼¼Áö ó¸®..
}
dwFileSize = ::GetFileSize(hFile, NULL);
hFileMap = CreateFileMapping(hFile, NULL, PAGE_WRITECOPY,
0,
dwFileSize,
NULL);
if(hFileMap == NULL) {
CloseHandle(hFile);
//¿©±â¿¡¼ ¿¡·¯
¸Þ¼¼Áö ó¸®..
}
lpFile = MapViewOfFile(hFileMap, FILE_MAP_COPY, 0,0,0);
if(lpFile == NULL) {
CloseHandle(hFile);
CloseHandle(hFileMap);
//¿©±â¿¡¼ ¿¡·¯
ó¸®
}
}
ÀÌ·¸°Ô Çϸé.. ´ë¿ë·®ÀÇ ÆÄÀÏÀ» ºü¸£°Ô ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù..
Á¦°¡ ½Ã°£À» Çѹø Á¦¾î ºÃ´Âµ¥.. 4ÃÊ ¾È¿¡ ²÷³ª´õ±º¿ä..
Èì.. ±×¸®°í ¿©±â¿¡ ³ª¿Â ÇÔ¼ö´Â Help¿¡¼ Á¤È®ÇÑ ³»¿ëÀ» º¸¼¼¿ä..
¸Þ¸ð¸® ¸ÊÆÄÀÏÀ» ÀÌ¿ëÇÑ ¹æ¹ý¿Ü¿¡ °£´ÜÇÑ ¹æ¹ýÀÌ ÀÖ¾î¼ ¸»¾¸µå·Áº¼±î ÇÕ´Ï´Ù.
¾î·Á¿î ·çƾÀº ¾Æ´Ï°í¿ä, ±×³É µµ½º¿ë ½ÃÀý¿¡ »ç¿ëÇß´ø freadÇÔ¼ö¸¦ »ç¿ëÇÑ °ÍÀÔ´Ï´Ù.
¹°·Ð fread´ë½Å ´Ù¸¥ ÆÄÀÏ Àбâ ÇÔ¼ö¸¦ »ç¿ëÇصµ µË´Ï´Ù.
´Ù¸¸ »ç¿ëÀÚ ÆíÀǸ¦ À§Çؼ Ãß°¡·Î ¸¸µé¾îÁø ÆÄÀÏÇÔ¼öµéÀº(ÆÄÀÏÇÔ¼ö»Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥
°Íµéµµ ¸¶Âù°¡Áö...) »ç¿ëÇϱä ÆíÇÏ°ÚÁö¸¸, ¼Óµµ°¡ ¹«Ã´ ´À¸° ¹®Á¦°¡ ÀÖ½À´Ï´Ù.
char *ReadFile( char *FileName )
{
FILE *fp;
int FileSize;
char *buffer;
try {
fp = fopen( FileName,
"rb" );
if( !fp ) throw
"File Not Found!";
FileSize = filelength(
fileno(fp) );
buffer = new char
[FileSize+1];
fread( buffer, FileSize,
1, fp );
*(buffer + FileSize)
= 0;
fclose( fp );
return buffer;
}
catch( char *msg ) {
printf( msg );
return NULL;
}
}
À§ÀÇ try ~ catch±¸ºÐÀº Áß¿äÇÑ°ÍÀº ¾Æ´Ï°í¿ä, ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¸ÓºÐµéÀÌ ¿¹¿Ü󸮸¦
ÇÔ¿¡ ÀÖ¾î¼ ÀϹÝÀûÀÎ C½ºÅ¸ÀÏ·Î ÀÏÀÏÈ÷ ¿¡·¯¸Þ½ÃÁö¸¦ ÄÚµùÇÏ´õ±º¿ä.
±×·¡¼ Ȥ½Ã³ª µµ¿òÀÌ µÉ±î Çؼ try ~ catch±¸ºÐÀ» »ç¿ëÇغ¸¾Ò½À´Ï´Ù.
¾î·Á¿î°Ç ¾Æ´Ï´Ï±ñ try ~ catch¸¦ »ç¿ëÇϸé ÄÚµùÀÌ ÈξÀ °£´ÜÇØÁú²¨¿¹¿ä. ^^
±×¸®°í À§ÀÇ ÆÄÀÏÀбâ ÇÔ¼ö¸¦ fopen/freadµîÀ» »ç¿ëÇߴµ¥, ÀÌ°Ç C¸¦ ½ÃÀÛÇÏ´Â
ºÐµé²² Á¶±ÝÀ̳ª¸¶ ÀÌÇØ°¡ ½±µµ·Ï µµ½º¿¡¼ »ç¿ëÇÏ´ø ÇÔ¼ö¸¦ »ç¿ëÇß½À´Ï´Ù.
¹°·Ð ÀÌ ÇÔ¼öµéÀº À©µµ¿ìÁî¿¡¼µµ ±×´ë·Î »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù.
¿ø·¡ µµ½º¿¡¼ fread´Â ÇÑºí·°ÃÖ´ëÅ©±â°¡ 64k·Î Á¦Çѵ˴ϴÙ.
µû¶ó¼ 64k¾¿ ³ª´©¾î¼ ÆÄÀÏÀ» Àоîµé¿©¾ß Çϴµ¥, À©µµ¿ìÁî¿¡¼´Â ±×³É Çѹø¿¡ ÀÐÀ»¼ö
ÀÖ´õ±º¿ä. ^^
10¸Þ°¡ Á¤µµ ÀоîµéÀ̴µ¥ ÀÖ¾î¼, Ææ133ÀÇ ÄÄ¿¡¼ ¾à 3Ãʹ̸¸À¸·Î °É¸®´Â °Í °°½À´Ï´Ù.