4#include "Stroika/Frameworks/StroikaPreComp.h"
8#if qStroika_HasComponent_ATLMFC
16#if qSupportDrawTextGetTextExtent
18#include "Stroika/Frameworks/Led/SimpleTextImager.h"
19#include "Stroika/Frameworks/Led/SimpleTextStore.h"
20#include "Stroika/Frameworks/Led/WordWrappedTextImager.h"
26using namespace Stroika::Frameworks::Led;
27using namespace Stroika::Frameworks::Led::Platform;
29#if qStroika_Frameworks_Led_AssertsDefaultToMFCAsserts && qStroika_Foundation_Debug_AssertionsChecked
30static class OneTimeLedMFCAssertionFunctionSetter {
32 static void MFCAssertionHandler (
const char* fileName,
int lineNum)
34 ::AfxAssertFailedLine (fileName, lineNum);
36 OneTimeLedMFCAssertionFunctionSetter ()
38 Led_SetAssertionHandler (MFCAssertionHandler);
40} sOneTimeLedMFCAssertionFunctionSetter;
44 qStroika_Frameworks_Led_MFCRequiresCWndLeftmostBaseClass);
51Led_MFCReaderDAndDFlavorPackage::Led_MFCReaderDAndDFlavorPackage (COleDataObject* dataObject)
53 , fDataObject (dataObject)
58bool Led_MFCReaderDAndDFlavorPackage::GetFlavorAvailable (Led_ClipFormat clipFormat)
const
61 return fDataObject->IsDataAvailable (clipFormat);
64size_t Led_MFCReaderDAndDFlavorPackage::GetFlavorSize (Led_ClipFormat clipFormat)
const
67 HGLOBAL hObj = fDataObject->GetGlobalData (clipFormat);
72 fDataObject->BeginEnumFormats ();
73 while (fDataObject->GetNextFormat (&formatC)) {
74 if (formatC.cfFormat == clipFormat) {
75 hObj = fDataObject->GetGlobalData (clipFormat, &formatC);
82 size_t result = ::GlobalSize (hObj);
87size_t Led_MFCReaderDAndDFlavorPackage::ReadFlavorData (Led_ClipFormat clipFormat,
size_t bufSize,
void* buf)
const
89 HGLOBAL hObj = fDataObject->GetGlobalData (clipFormat);
94 fDataObject->BeginEnumFormats ();
95 while (fDataObject->GetNextFormat (&formatC)) {
96 if (formatC.cfFormat == clipFormat) {
97 hObj = fDataObject->GetGlobalData (clipFormat, &formatC);
101 size_t sizeCopied = 0;
103 size_t realSize = ::GlobalSize (hObj);
104 sizeCopied = min (realSize, bufSize);
105 void* p = ::GlobalLock (hObj);
106 if (p !=
nullptr and sizeCopied != 0) {
107 (void)::memcpy (buf, p, sizeCopied);
109 ::GlobalUnlock (hObj);
112 Ensure (sizeCopied <= bufSize);
116COleDataObject* Led_MFCReaderDAndDFlavorPackage::GetOleDataObject ()
const
126Led_MFCWriterDAndDFlavorPackage::Led_MFCWriterDAndDFlavorPackage (COleDataSource* dataObject)
128 , fDataObject (dataObject)
133void Led_MFCWriterDAndDFlavorPackage::AddFlavorData (Led_ClipFormat clipFormat,
size_t bufSize,
const void* buf)
135 HGLOBAL dataHandle = ::GlobalAlloc (GMEM_DDESHARE, bufSize);
136 Execution::ThrowIfNull (dataHandle);
137 char* lockedMem = (
char*)::GlobalLock (dataHandle);
139 (void)::memcpy (lockedMem, buf, bufSize);
140 ::GlobalUnlock (lockedMem);
141 fDataObject->CacheGlobalData (clipFormat, dataHandle);
149COleDataSource* Led_MFCWriterDAndDFlavorPackage::GetOleDataSource ()
const
159MFC_CommandNumberMapping::MFC_CommandNumberMapping ()
161 AddAssociation (ID_EDIT_UNDO, TextInteractor::kUndo_CmdID);
162 AddAssociation (ID_EDIT_REDO, TextInteractor::kRedo_CmdID);
163 AddAssociation (ID_EDIT_SELECT_ALL, TextInteractor::kSelectAll_CmdID);
164 AddAssociation (ID_EDIT_CUT, TextInteractor::kCut_CmdID);
165 AddAssociation (ID_EDIT_COPY, TextInteractor::kCopy_CmdID);
166 AddAssociation (ID_EDIT_PASTE, TextInteractor::kPaste_CmdID);
167 AddAssociation (ID_EDIT_CLEAR, TextInteractor::kClear_CmdID);
168 AddAssociation (ID_EDIT_FIND, TextInteractor::kFind_CmdID);
176Led_MFC_TmpCmdUpdater::CommandNumber Led_MFC_TmpCmdUpdater::GetCmdID ()
const
181bool Led_MFC_TmpCmdUpdater::GetEnabled ()
const
186void Led_MFC_TmpCmdUpdater::SetEnabled (
bool enabled)
189 fCmdUI->Enable (enabled);
193void Led_MFC_TmpCmdUpdater::SetChecked (
bool checked)
196 fCmdUI->SetCheck (checked);
202 fCmdUI->SetText (text);
205#if qSupportDrawTextGetTextExtent
213CSize Led_GetTextExtent (CDC* cdc,
const Led_tString& text, CRect r,
bool wordWrap)
215 return Led_GetTextExtent<WordWrappedTextImager, SimpleTextImager, SimpleTextStore> (cdc, text, r, wordWrap);
225void Led_DrawText (CDC* cdc,
const Led_tString& text, CRect r,
bool wordWrap)
227 Led_DrawText<WordWrappedTextImager, SimpleTextImager, SimpleTextStore> (cdc, text, r, wordWrap);
#define RequireNotNull(p)
#define CompileTimeFlagChecker_SOURCE(NS_PREFIX, NAME, VALUE)
conditional_t< qStroika_Foundation_Characters_SDKUseswchar_t, wchar_t, char > SDKChar