Knowledge Base Nr: 00173 enumwin.cpp - http://www.swe-kaiser.de

MFC: alle controls eines dialogs nach static controls durchsuchen

  
////////////////////////
//im mainframe einbauen

class CMainFrame : public CMDIFrameWnd
{
...
public:
static BOOL CALLBACK MyEnumChildProc(HWND hwnd, LPARAM lParam);
...
}

BOOL CALLBACK CMainFrame::MyEnumChildProc(HWND hwnd, LPARAM lParam)
{
char szClass[100] = {0};
char szText[100] = {0};
char szNewText[100] = {0};

::GetClassName(hwnd, szClass, sizeof(szClass));
if (strcmp("Static", szClass) == 0)
{
::GetWindowText(hwnd, szText, sizeof(szText));
TRACE("wnd:0x%x lparam:%d class:%s wndtext:%s \n", hwnd, lParam, szClass, szText);

//TODO: hier text übersetzen oder ähnliches
sprintf(szNewText, "bla:%s:bla", szText);

::SetWindowText(hwnd, szNewText);
}

return TRUE;
}

////////////////////////
//in views nutzen

#include "MainFrm.h"

void CEnumwinView::OnButton1()
{
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
WNDENUMPROC lpEnumFunc = pMainWnd->MyEnumChildProc;

BOOL bSucc = EnumChildWindows(GetSafeHwnd(), lpEnumFunc, IDD);
ASSERT(bSucc);
}