ライブプレビューのカスタマイズ
タスクバーのサムネイルにマウスカーソルを乗せると表示されるライブプレビューをカスタマイズします。
最終更新:2017/11/18
初版:2017/11/18
HRESULT WINAPI DwmSetIconicLivePreviewBitmap(
HWND hwnd,
HBITMAP hbmp,
_In_opt_ POINT *pptClient,
DWORD dwSITFlags
);
hwnd に変更するウィンドウハンドルを指定します。| 値 | 意味 |
|---|---|
| 0(0x00000000) | ライブプレビューの周りにフレームを表示しない |
| DWM_SIT_DISPLAYFRAME(0x00000001) | ライブプレビューの周りにフレームを表示する |
Before![]() | After![]() |
|---|
//HSP3.5から対応
//(c) inonote 2017
#packopt name "ライブプレビュー置き換え"
#include "gdi32.as"
#include "user32.as"
#uselib "dwmapi.dll"
#func DwmSetIconicLivePreviewBitmap "DwmSetIconicLivePreviewBitmap" int, int, int, int
#func DwmSetWindowAttribute "DwmSetWindowAttribute" int, int, int, int
#define BI_RGB 0
#define SRCCOPY 0x00CC0020
#define DWM_SIT_DISPLAYFRAME 0x00000001
#define WM_DWMSENDICONICLIVEPREVIEWBITMAP 0x0326
#enum DWMWA_NCRENDERING_ENABLED = 1
#enum DWMWA_NCRENDERING_POLICY
#enum DWMWA_TRANSITIONS_FORCEDISABLED
#enum DWMWA_ALLOW_NCPAINT
#enum DWMWA_CAPTION_BUTTON_BOUNDS
#enum DWMWA_NONCLIENT_RTL_LAYOUT
#enum DWMWA_FORCE_ICONIC_REPRESENTATION
#enum DWMWA_FLIP3D_POLICY
#enum DWMWA_EXTENDED_FRAME_BOUNDS
#enum DWMWA_HAS_ICONIC_BITMAP
#enum DWMWA_DISALLOW_PEEK
#enum DWMWA_EXCLUDED_FROM_PEEK
#enum DWMWA_CLOAK
#enum DWMWA_CLOAKED
#enum DWMWA_FREEZE_REPRESENTATION
#enum DWMWA_LAST
buffer 1 //ライブプレビュー用画像バッファ
color 122, 0, 122:boxf
color 0, 0, 0:font "MS 明朝", 128
mes "ライブ\nプレビュー\n置き換え済"
screen 0
color 122, 255, 122:boxf
color 0, 0, 0:font "MS ゴシック", 128
mes "あいうえお"
oncmd gosub *OnSendIconicLivePreviewBitmap, WM_DWMSENDICONICLIVEPREVIEWBITMAP
// ウィンドウの属性を変更してライブプレビューを変更できるようにする
trueValue=1
DwmSetWindowAttribute hwnd, DWMWA_FORCE_ICONIC_REPRESENTATION, varptr(trueValue), 4
DwmSetWindowAttribute hwnd, DWMWA_HAS_ICONIC_BITMAP, varptr(trueValue), 4
stop
*OnSendIconicLivePreviewBitmap //Aeroプレビュービットマップを求めた
SetIconicLivePreviewBitmapFromBuffer hwnd, 1
return 0
//SetIconicLivePreviewBitmapFromBuffer ウィンドウハンドル, バッファID
#deffunc SetIconicLivePreviewBitmapFromBuffer int hnd, int bufferid
dim Rect, 4
oldbufferid = ginfo_sel
gsel bufferid
Rect = 0, 0, ginfo_sx, ginfo_sy
//ライブプレビュー用 32bit ビットマップ作成
imagesize = Rect(2)*Rect(3)*4
bmi = 40, Rect(2), Rect(3), 1|(32<<16),BI_RGB, imagesize
hdc_livepre = CreateCompatibleDC(0) //デバイスコンテキスト作成
hbmp_livepre = CreateDIBSection(0, varptr(bmi), 0, varptr(lpBits), 0, 0) //ビットマップ作成
if (hbmp_livepre){
hOldBmp1 = SelectObject(hdc_livepre, hbmp_livepre)
BitBlt hdc_livepre, 0, 0, Rect(2), Rect(3), hdc, 0, 0, SRCCOPY //HSPの仮想スクリーンからコピー
//後片付け
SelectObject hdc_livepre, hOldBmp1
}
DeleteDC hdc_livepre
DwmSetIconicLivePreviewBitmap hnd, hbmp_livepre, varptr(Rect), DWM_SIT_DISPLAYFRAME //ライブプレビュービットマップを設定
DeleteObject hbmp_livepre
gsel oldbufferid
return
(C)2019 inonote / 無断転載禁止