c++ - Function returns std::wstring = NULL; -
i have trying make wrapper winapi function getwindowtext
. function returns std::wstring don't know how handle error happen. return null know it's wrong.
std::wstring getwindowtext(hwnd handle) { const int size = 1024; tchar wnd_text[size] = {0}; hresult hr = ::getwindowtext(handle, wnd_text, size); if(succeeded(hr)) return std::wstring(wnd_text); else return null; }
as alternative exceptions return string reference in argument list , indicate sucess returning true or false i.e.
bool getwindowtext(hwnd handle, std::wstring& windowtext) { const int size = 1024; tchar wnd_text[size] = {0}; hresult hr = ::getwindowtext(handle, wnd_text, size); if(succeeded(hr)) { windowtext = wnd_text; return true; } else return false; }
another alternative avoids reference argument return instance of class wraps value lets know whether value present e.g.
class valuewrapper { public: valuewrapper() : present( false ) {} valuewrapper( const std::wstring& s ) : value( s ), present( true ) {} bool ispresent() const { return present; } const std::wstring& getvalue() const { return value; } private: std::wstring value; bool present; };
note can template wrapper pretty easily. function be
valuewrapper getwindowtext(hwnd handle) { const int size = 1024; tchar wnd_text[size] = {0}; hresult hr = ::getwindowtext(handle, wnd_text, size); if(succeeded(hr)) return valuewrapper( wnd_text ); else return valuewrapper(); }
Comments
Post a Comment