Как я могу правильно извлечь все управляющие тексты из MFC DLL с C# и Pinvoke? Кроме того, в этих ресурсах есть элементы, и у них также есть два формата: dlgitemtemplate и dlgitemtemplateex .
Я использую Pinvoke для вызова Apis Windows: findresource , loadresource , lockResource , enumReSourceName . Я успешно мог извлечь тексты из диалога. Я перечисляю через диалоговые ресурсы, мог бы получить идентификатор, заголовок и многие контрольные тексты. И когда я переключаю DLL и использую другой, 50% работа, а другие нет. У некоторых из них нет статического размера, но каждый ресурс диалога может иметь другой.
Я работаю с указателями. Затем, когда нормальный шаблон выполняется, он итерация проходит через элементы. Но, тем не менее, есть проблемы. И нормальный формат диалога dlgtemplate не работает. Что-то не так.
Как я могу правильно извлечь все управляющие тексты из MFC DLL с C# и Pinvoke? Кроме того, в этих ресурсах есть элементы, и у них также есть два формата: dlgitemtemplate и dlgitemtemplateex . Я использую Pinvoke для вызова Apis Windows: findresource , loadresource , lockResource , enumReSourceName . Я успешно мог извлечь тексты из диалога. Я перечисляю через диалоговые ресурсы, мог бы получить идентификатор, заголовок и многие контрольные тексты. И когда я переключаю DLL и использую другой, 50% работа, а другие нет. У некоторых из них нет статического размера, но каждый ресурс диалога может иметь другой. Я работаю с указателями. Затем, когда нормальный шаблон выполняется, он итерация проходит через элементы. Но, тем не менее, есть проблемы. И нормальный формат диалога dlgtemplate не работает. Что-то не так.[code]if (isExtended) { // ---- DLGTEMPLATEEX ---- ushort dlgVer = (ushort)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); ushort signature = (ushort)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); uint helpID = (uint)Marshal.ReadInt32(currentPtr); currentPtr = IntPtr.Add(currentPtr, 4); uint exStyle = (uint)Marshal.ReadInt32(currentPtr); currentPtr = IntPtr.Add(currentPtr, 4); uint style = (uint)Marshal.ReadInt32(currentPtr); currentPtr = IntPtr.Add(currentPtr, 4); ushort cDlgItems = (ushort)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); short x = (short)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); short y = (short)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); short cx = (short)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2); short cy = (short)Marshal.ReadInt16(currentPtr); currentPtr = IntPtr.Add(currentPtr, 2);
// Variable Fields SkipDialogField(ref currentPtr); // Menu SkipDialogField(ref currentPtr); // Window Class string title = ReadUnicodeString(ref currentPtr); // Dialog Title result.DialogTitle = title;
ushort extraDataSize = (ushort)Marshal.ReadInt16(ptr); ptr = IntPtr.Add(ptr, 2 + extraDataSize); } return controlTexts; } [/code] Шаблоны можно найти в документации Microsoft. Я думаю, что мне нужно переделать весь код.>
Как я могу правильно извлечь все контрольные тексты из MFC DLL с C# и P Invoke.
Проблема в том, что есть два формата. Dlgtemplate и dlgtemplateex. Кроме того, в этих ressources есть элементы, и они также имеют два формата. С Findresource,...
(извините за мой плохой английский)
Я пытаюсь создать пользовательский элемент управления по проекту на основе диалога MFC (Visual Studio 2012).
Это настройка, когда я создаю проект, основанный на диалоге MFC:
Я использую VS 2022. У меня есть работающее многопоточное приложение MFC C++ A (модальное) и отдельное рабочее (модальное) однопоточное приложение MFC C++ B. Я хотел бы использовать B как средство как для диалога A, так и для его дочерний поток для...
Я использую VS 2022. У меня есть работающее многопоточное приложение MFC C++ A (модальное) и отдельное рабочее (модальное) однопоточное приложение MFC C++ B. Я хотел бы использовать B как средство как для диалога A, так и для его дочерний поток для...
У меня есть приложение на основе MFC. Я хотел бы добавить ленточную полосу вместо панели инструментов. Как я могу этого добиться? Есть ли пример кода, чтобы получить его? p>
Заранее спасибо за ваши ценные входы