В качестве обходного пути я мог бы предложить следующую функцию, чтобы получить растровое изображение стрелки сортировки.
HBITMAP GetSortArrowBmp(HWND hwnd, HEADERSORTARROWSTATES arrowState, int width, int height){
RECT rect; // dimensions of a bitmap
rect.left = 0;
rect.right = width;
rect.top = 0;
rect.bottom = height;
HDC hdc;
HDC hdcMem;
HBITMAP hBitmap;
hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, width, height);
HTHEME theme = OpenThemeData(hwnd, L"HEADER");
if(theme){
DrawThemeBackground(theme, hdcMem, HP_HEADERITEM, HIS_ICONNORMAL, &rect, NULL);
// drawing sort arrow
DrawThemeBackground(theme, hdcMem, HP_HEADERSORTARROW, arrowState, &rect, NULL);
}
CloseThemeData(theme);
DeleteObject(hdcMem);
ReleaseDC(hwnd, hdc);
return hBitmap;
}
Хотя я не использовал это в своем коде.Я применил ту же функцию DrawThemeBackground(theme, hdcMem, HP_HEADERSORTARROW, arrowState, &rect, NULL);
внутри заголовка рисования владельца, которая была более элегантной, чем ее отрисовка на растровое изображение и отображение этого растрового изображения.