예제 #1
0
        private IntPtr MakeNewString(string text, TaskDialogNativeMethods.TaskDialogElements element)
        {
            var newStringPtr = Marshal.StringToHGlobalUni(text);

            updatedStrings[(int)element] = newStringPtr;
            return(newStringPtr);
        }
예제 #2
0
        private void UpdateTextCore(string s, TaskDialogNativeMethods.TaskDialogElements element)
        {
            AssertCurrentlyShowing();

            FreeOldString(element);
            SendMessageHelper(
                TaskDialogNativeMethods.TaskDialogMessages.SetElementText,
                (int)element,
                (long)MakeNewString(s, element));
        }
예제 #3
0
        // Checks to see if the given element already has an updated string, and if so, frees it. This is done in preparation for a call to
        // MakeNewString(), to prevent leaks from multiple updates calls on the same element within a single native dialog lifetime.
        private void FreeOldString(TaskDialogNativeMethods.TaskDialogElements element)
        {
            var elementIndex = (int)element;

            if (updatedStrings[elementIndex] != IntPtr.Zero)
            {
                Marshal.FreeHGlobal(updatedStrings[elementIndex]);
                updatedStrings[elementIndex] = IntPtr.Zero;
            }
        }