2016-04-11 16 views
2

DWMサムネイルを持つ別のウィンドウをミラー化したウィンドウがあります。プレビュー領域のサイズを変更するよりも、プレビューウィンドウのサイズを変更したいときに使用します。これどうやってするの?プレビューの新しいサイズに関するアップデートを送信するにはどうすればよいですか(プレビューウィンドウのサイズに300x300のサイズを変更します)?DWMサムネイル、プレビューウィンドウのサイズの変更

switch (message) { 
case WM_CREATE: 
    { 
     HRESULT hr = S_OK; 
     HTHUMBNAIL thumbnail = NULL; 
     hr = DwmRegisterThumbnail(hWnd, ieWindowHwnd, &thumbnail); 
     if (SUCCEEDED(hr)) { 
      // The destination rectangle size 
      RECT dest = {0,0,300,300}; 

      // Set the thumbnail properties for use 
      DWM_THUMBNAIL_PROPERTIES dskThumbProps; 
      dskThumbProps.dwFlags = DWM_TNP_RECTDESTINATION | DWM_TNP_VISIBLE | DWM_TNP_SOURCECLIENTAREAONLY; 

      // Use the window frame and client area 
      dskThumbProps.fSourceClientAreaOnly = FALSE; 
      dskThumbProps.fVisible = TRUE; 
      dskThumbProps.rcDestination = dest; 

      // Display the thumbnail 
      hr = DwmUpdateThumbnailProperties(thumbnail, &dskThumbProps); 
     } 
    } 
    break; 
case WM_SIZE: 
    { 
     // What to do here. 
    } 
    break; 

答えて

1

ウィンドウプロシージャに静的な値として宣言し、WM_CREATEからthumbnail宣言を削除します。次ににthumbnailを更新します。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wp, LPARAM lp) 
{ 
    static HTHUMBNAIL thumbnail = NULL; 

    switch (message) 
    { 
    ...  
    case WM_SIZE: 
    { 
     if (thumbnail) 
     { 
      RECT rc; 
      GetClientRect(hWnd, &rc); 
      DWM_THUMBNAIL_PROPERTIES dskThumbProps; 
      ... 
      dskThumbProps.rcDestination = rc; 
      DwmUpdateThumbnailProperties(thumbnail, &dskThumbProps); 
     } 
     break; 
    } 
} 

終了したらDwmUnregisterThumbnailと呼んでください。

関連する問題