2010-06-14 131 views
0

使用Visual Studio 6(VC++ 6.0)我使用的ActiveX日期選擇器控件,我未能顯示默認情況下展開(3006216)。另外我想送鍵盤消息(F4),以我的窗口中打開了控制,但是當我這樣做沒有任何反應......發送消息(F4)發送到窗口時失敗

// try 1: use the standard window handle 
LRESULT result = ::SendMessage(m_hWnd,VK_F4, 0, 0); 
// try 2: use just use the SendMessage 
result = SendMessage(VK_F4); 

結果總是0 - 我能做些什麼來測試/驗證消息發送?

感謝acvance很多...

奧利

+0

退房: 「你不能模擬鍵盤輸入與PostMessage的」(HTTP://blogs.msdn .com/b/oldnewthing/archive/2005/05/30/423202.aspx) – humbagumba 2010-06-14 11:26:03

回答

-1

好 - 有關於這個問題的兩種方法(感謝所有幫助,夥計們!):

第一:使用「:: SendMessage函數」用正確的信息,正確處理:

::SendMessage(m_wndDatePicker.m_hWnd, WM_KEYDOWN, VK_F4, 0); 

或者使用 「SendInput」:

// important: set focus to control first  
m_wndDatePicker.SetFocus(); 

INPUT *key; 

key = new INPUT; 
key->type = INPUT_KEYBOARD; 
key->ki.wVk = VK_F4; 
key->ki.dwFlags = 0; 
key->ki.time = 0; 
key->ki.wScan = 0; 
key->ki.dwExtraInfo = 0; 

SendInput(1,key,sizeof(INPUT)); 
0

VK_F4是一個關鍵的代碼,而不是一個窗口消息。試試這個:

::SendMessage(m_hWnd, WM_KEYDOWN, VK_F4, 0); 
::SendMessage(m_hWnd, WM_KEYUP, VK_F4, 0); 
+0

恩,謝謝你的幫忙。不幸的是窗戶的行爲沒有任何改變,對不起! – Olli 2010-06-14 09:56:09

+0

@Olli,檢查我的編輯。我沒有測試代碼,也許還需要'WM_KEYDOWN'。 – 2010-06-14 10:07:22

+0

@尼克D:沒有改進 - 還有什麼想法......? – Olli 2010-06-14 11:10:44