2014-09-11 108 views
1

在我的WIN32對話框中,我繪製了一個圓(位圖資源),並且我想要位於它附近的圖像。 我不能強迫光標在圓上圖像的頂部在位圖圖像頂部繪製圖像

Red cursor obscured by circle image

我畫兩個圈和光標靜態窗口:

圈:

HWND hRingImage= CreateStatics(m_hDlg, hInst, SS_BITMAP | WS_BORDER, rc, m_ID, L""); 
HANDLE hRingImage1 = LoadImage(hInst, MAKEINTRESOURCE(IDB_RING50), IMAGE_BITMAP,m_Radius*2, m_Radius*2, LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS); 
SendMessage(hRingImage,STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hRingImage1); 
m_hRingImage = hRingImage; 
if (!Enabled) 
    ShowWindow(hRingImage, SW_HIDE); 

紅色光標:

m_hIndicator= CreateStatics(m_hDlg, GetModuleHandle(NULL), SS_ICON , rc, m_ID+10, L""); 
HANDLE hRingImage1 = LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_INDICATOR), IMAGE_CURSOR,8, 8, LR_DEFAULTSIZE|LR_SHARED ); 
SendMessage(m_hIndicator,STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hRingImage1); 
SetWindowPos(m_hIndicator, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE); 
ShowWindow(m_hIndicator, SW_SHOW); 

我看不到什麼使得圓頂最上方,而遊標總是在底部(奇怪的是,他們也在對話框框架線。

+0

我不熟悉* win32gui *和* CreateStatics *函數,但據我瞭解,您爲光標創建一個窗口,然後移動此窗口來模擬光標? – 2014-09-11 12:10:56

+0

好的。我希望光標會給我透明度,但它就像一個圖像。我應該可能使用GDI +並使用某種轉換。 – Shaul 2014-09-11 14:41:19

回答

0

我必須做到以下幾點:

ShowWindow(m_hIndicator, SW_HIDE); 
MoveWindow(m_hIndicator, loc.x-3,loc.y-3,8,8, TRUE); 
ShowWindow(m_hIndicator, SW_SHOW); 

「光標」 這實際上只是一個位圖位於正確頂部所有其他位圖。

1

您可以設置光標manualy:

First load the cursor image-> HCURSOR hCursorRing = LoadCursor(...); 

BOOL CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ 
    switch (message){ 
     case WM_CLOSE: 
      DestroyWindow(hDlg); 

      break ; 

     case WM_SETCURSOR: 
      if((HWND)wParam == hRingImage){ 
       SetCursor(hCursorRing); 

       return true; 
      } 

      break ; 

     default: //for messages that we don't deal with 
      return false; 
    } 

    return false; 
} 

瓦爾特

+0

我用了一個不正確的術語'遊標'。我需要的是有一個小圖像(透明度),以編程方式**在另一個圖像上的頂部**(環形)。 – Shaul 2014-09-11 19:27:26

+0

@Shaul小圖像將在哪個區域移動? – 2014-09-12 18:24:45