How to Iterate Over an STL Collection with for each
#include <map>
map<const char*, int> months;
months["january"] = 31;
...
map<const char*, int> months_30;
for each( pair<const char*, int> c in months )
if ( c.second == 30 )
months_30[c.first] = c.second;
from: http://msdn.microsoft.com/en-us/library/ms177203(VS.80).aspx (link no longer valid)
Creating a Directory Chooser in MFC
MFC does not provide access to the directory-picking dialog as it does the other common dialogs so the solution is to use use the ShBrowseForFolder function.
void CMyDlg::OnButton1() {
char Dest[MAX_PATH];
PickDir("Hello", Dest);
}
bool CMyDlg::PickDir(const char *prompt, char * dest) {
// Dest is assumed to be _MAX_PATH characters in length
BROWSEINFO bi;
ITEMIDLIST* pItemIDList;
char folder[_MAX_PATH];
memset(&bi, 0, sizeof(bi));
bi.hwndOwner = m_hWnd;
bi.pszDisplayName = folder;
bi.lpszTitle = prompt;
if ((pItemIDList=SHBrowseForFolder(&bi)) != NULL) {
SHGetPathFromIDList(pItemIDList, dest);
return(true);
} else return false;
}
From an Example by R.J.Menadue formerly at: http://rossm.net/Electronics/Computers/Software/C++/MFC.htm (2008)
Length of a LPTSTR
To get the length of a null-terminated LPTSTR in C or C++, use _tcslen, declared in TCHAR.H.
