2013-08-01 49 views
2

我通過以下代碼創建了up-down control上下控制不顯示其夥伴窗口中的位置

HWND hEdit, hUpDown; 

hEdit = CreateWindowExW(WS_EX_CLIENTEDGE, 
         L"EDIT", 
         Content.c_str(), 
         ES_LEFT | WS_VISIBLE | WS_CHILD, 
         600, 
         260, 
         100, 
         25, 
         hWndParent, 
         NULL, 
         hInstance, 
         NULL); 

INITCOMMONCONTROLSEX iccx; 
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX); 
iccx.dwICC = ICC_UPDOWN_CLASS; 
InitCommonControlsEx(&iccx); 

hUpDown = CreateWindowExW( 0, 
          UPDOWN_CLASSW, 
          L"", 
          UDS_ARROWKEYS | UDS_ALIGNRIGHT | WS_VISIBLE | WS_CHILD, 
          0, 
          0, 
          0, 
          0, 
          hWndParent, 
          NULL, 
          hInstance, 
          NULL); 

SendMessageW(hUpDown, UDM_SETBUDDY, (WPARAM) hEdit, (LPARAM) NULL); 
SendMessageW(hUpDown, UDM_SETRANGE32, (WPARAM) 0,  (LPARAM) 100); 
Sleep(5000); 
SendMessageW(hUpDown, UDM_SETPOS32, (WPARAM) NULL, (LPARAM) 20); 
Sleep(5000); 
SendMessageW(hUpDown, UDM_SETPOS32, (WPARAM) NULL, (LPARAM) 60); 

我檢查了SendMessageW()函數的返回值。他們通過返回以前的位置值as documented成功終止。

創建的上下控制看起來正常:
the created up-down control

的問題是,在發送UDM_SETPOS32消息,單擊向上和向下箭頭,然後按鍵盤上的上下鍵沒有任何效果。我無法直接在其中輸入內容來更改編輯控件的內容(上下控件的好友窗口)。它只是空着。

我可以手動通過使用鍵盤輸入任何東西:
example text input

如何通過按下鍵盤上的箭頭鍵更改此上下控制的位置/值,通過點擊箭頭GUI並通過在代碼中發送UDM_SETPOS32?我在代碼中缺少什麼?

+0

這個問題不使用第三方的,[Win32GUI(https://開頭的SourceForge .net/projects/win32gui /)庫,我建議從這個問題中刪除標記,我會刪除它,但不建議用戶建議標記編輯。 – jrh

回答

3

使用樣式UDS_SETBUDDYINT進行上下控制,同時創建它。

MSDN documentation

UDS_SETBUDDYINT
導致上下控制來設置好友窗口(使用WM_SETTEXT消息)的位置變化時的文本。文本由格式化爲十進制或十六進制字符串的位置組成。

變化通過增加UDS_SETBUDDYINT風格類似這樣的上下控制的創建代碼:

hUpDown = CreateWindowExW( 0, 
          UPDOWN_CLASSW, 
          L"", 
          UDS_SETBUDDYINT | UDS_ARROWKEYS | UDS_ALIGNRIGHT | WS_VISIBLE | WS_CHILD, 
          0, 
          0, 
          0, 
          0, 
          hWndParent, 
          NULL, 
          hInstance, 
          NULL); 
+1

在問我的問題之前,我找到了解決方案。所以我也發佈了答案。 – hkBattousai