VDStringA VDGetWindowTextAW32(HWND hwnd) { char buf[512]; int len = GetWindowTextLengthA(hwnd); if (len > 511) { vdblock<char> tmp(len + 1); len = GetWindowTextA(hwnd, tmp.data(), tmp.size()); const char *s = tmp.data(); VDStringA text(s, s+len); return text; } else if (len > 0) { len = GetWindowTextA(hwnd, buf, 512); return VDStringA(buf, buf + len); } return VDStringA(); }
VDRegistryProviderMemory::Value *VDRegistryProviderMemory::Key::OpenValue(const char *name, bool create) { if (!name) name = ""; ValueMap::iterator it(mValueMap.find_as(name)); if (it != mValueMap.end()) return &it->second; if (!create) return NULL; ValueMap::insert_return_type r(mValueMap.insert(VDStringA(name))); mValueList.push_back(&*r.first); return &r.first->second; }
VDRegistryProviderMemory::Key *VDRegistryProviderMemory::Key::OpenKey(const VDStringSpanA& name, bool create) { KeyMap::iterator it(mKeyMap.find_as(name)); if (it != mKeyMap.end()) return &it->second; if (!create) return NULL; KeyMap::insert_return_type r(mKeyMap.insert(VDStringA(name))); mKeyList.push_back(&*r.first); Key *key = &r.first->second; key->mpParent = this; return key; }