c++ - Why the CString(LPCTSTR lpsz) constrcutor check the high two bytes of lpsz? -
i reading source code of cstring in mfc. curious implementation way of constructor cstring::cstring(lpctstr lpsz).
in understanding, before copying string indicated lpsz, needs check whether lpsz null no need combine checking if hiword(lpsz) null.
is mfc guy passing here , willing give explanations?
cstring::cstring(lpctstr lpsz) { init(); if (lpsz != null && hiword(lpsz) == null) { uint nid = loword((dword)lpsz); if (!loadstring(nid)) trace1("warning: implicit loadstring(%u) failed\n", nid); } else { int nlen = safestrlen(lpsz); if (nlen != 0) { allocbuffer(nlen); memcpy(m_pchdata, lpsz, nlen*sizeof(tchar)); } } }
it checks whether passed actual pointer or integer resource identifier makeintresource. in latter case loads string resources.
Comments
Post a Comment