Fixed by https://sourceforge.net/p/wtl/git/ci/135be57e41d12351303221295154706ec8515bd9/ @nenadstefanovic, thanks!
PS: Judging by github search I'm the third person to use CEditFindReplaceImplBase in github projects...
I've also encountered the following problem (it might be caused by incorrect WTL usage though): Setup: pParent is a dialog, which can invoke FindReplaceDialog (implemented via CEditFindReplaceImplBase). Bug(?) description: Close (via EndDialog) pParent while FindReplaceDialog is open This causes both windows to close and FindReplaceDialog to self-destruct: CWindowImplBaseT::WindowProc > CFindReplaceDialogImpl::OnFinalMessage > delete this > CEditFindReplaceImplBase::m_pFindReplaceDialog now points...
This method has the following code POINT point = pT->PosFromChar(nStartChar); ::ClientToScreen(pT->GetParent(), &point); Note that we get char position from pT, but calculate it's absolute position relative to the parent of pT. Thus if pT is a control placed inside pParent with shifted coordinates, then ClientToScreen will return invalid absolute position and the adjusted window position will be wrong. Correct code would be POINT point = pT->PosFromChar(nStartChar); ::ClientToScreen(pT->operator...
This method has the following code POINT point = pT->PosFromChar(nStartChar); ::ClientToScreen(pT->GetParent(), &point); Note that we get char position from pT, but calculate it's absolute position relative to the parent of pT. Thus if pT is a control placed inside pParent with shifted coordinates, then ClientToScreen will return invalid absolute position and the adjusted window position will be wrong. Correct code would be POINT point = pT->PosFromChar(nStartChar); ::ClientToScreen(static_cast<HWND>(pT),...