Каково правильное использование функции «dwmseticonichunail»?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Каково правильное использование функции «dwmseticonichunail»?

Сообщение Anonymous »

Я использую функцию dwmseticonicthumbnail для установки пользовательского изображения для предварительного просмотра значка задачи. Мой вопрос заключается в том, почему, когда мышь сначала размещены на значке для предварительного просмотра, отображаемое состояние такое же, как и на изображении первой главы, а ширина всплывающего уровня не адаптируется к ширине изображения. However, when the mouse is moved over for preview the second time, it returns to normal
This is what I see:
Изображение

This is what I want:

Я попытался уменьшить размер изображения, но он не работал
Это часть исходного кода:
> 16) & 0xffff);
var height = (int)((long)lParam & 0xffff);

var round = Math.Min(width, height);

IntPtr hBitmap = IntPtr.Zero;
try
{
var adaptedSize = new System.Drawing.Size(round, round);

hBitmap = CreateBitmap(_iconicThumbnailImage, adaptedSize);
_ = Win32.DwmSetIconicThumbnail(hwnd, hBitmap, 0);
}
finally
{
Win32.DeleteObject(hBitmap);
}

handled = true;
}

if (msg == WM_DWMSENDICONICLIVEPREVIEWBITMAP)
{
IntPtr hBitmap = IntPtr.Zero, offsetPtr = IntPtr.Zero;
try
{
var aspectRatio = 1.0f * _iconicThumbnailImage.PixelWidth / _iconicThumbnailImage.PixelHeight;
var adaptedSize = AdjustBitmapSize(in aspectRatio, _iconicThumbnailImage.PixelWidth, _iconicThumbnailImage.PixelHeight);

var offsetX = (int)((AppCore.MainWindow.Width - adaptedSize.Width) / 2);
var offsetY = (int)((AppCore.MainWindow.Height - adaptedSize.Height) / 2);
var offset = new System.Drawing.Point(offsetX, offsetY);

offsetPtr = Marshal.AllocHGlobal(Marshal.SizeOf());
Marshal.StructureToPtr(offset, offsetPtr, false);

hBitmap = CreateBitmap(_iconicThumbnailImage, adaptedSize, true);
_ = Win32.DwmSetIconicLivePreviewBitmap(hwnd, hBitmap, offsetPtr, Win32.DWM_SIT.None);
}
finally
{
Win32.DeleteObject(hBitmap);
Marshal.FreeHGlobal(offsetPtr);
}

handled = true;
}

return IntPtr.Zero;
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... l-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»