1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include "nel/misc/win32_util.h"
19 #include "nel/misc/i18n.h"
31 //*************************************************************************************
32 void CWin32Util::localizeWindow(HWND wnd
)
35 sint textLength
= GetWindowTextLengthW(wnd
);
39 GetWindowTextW(wnd
, str
, 1024);
40 std::string winText
= wideToUtf8(str
);
41 if (CI18N::hasTranslation(winText
))
43 if (!SetWindowTextW(wnd
, (const WCHAR
*) CI18N::get(winText
).c_str()))
45 nlwarning("SetWindowText failed: %s", formatErrorMessage(getLastError()).c_str());
49 HWND currSon
= GetWindow(wnd
, GW_CHILD
);
52 HWND lastSon
= GetWindow(currSon
, GW_HWNDLAST
);
55 localizeWindow(currSon
);
56 if (currSon
== lastSon
) break;
57 currSon
= GetWindow(currSon
, GW_HWNDNEXT
);
62 //*************************************************************************************
63 void CWin32Util::appendChildWindows(HWND parentWnd
, std::vector
<HWND
> &childWindows
)
65 if (!parentWnd
) return;
66 HWND currSon
= GetWindow(parentWnd
, GW_CHILD
);
69 HWND lastSon
= GetWindow(currSon
, GW_HWNDLAST
);
72 childWindows
.push_back(currSon
);
73 appendChildWindows(currSon
, childWindows
);
74 if (currSon
== lastSon
) break;
75 currSon
= GetWindow(currSon
, GW_HWNDNEXT
);