2013-02-14 79 views
0

我在這裏有一個情況,我不知道什麼是錯的。 我有一個父母和兩個sunclassed children.Both是編輯類型。 現在我正在使用第一個控件(第一個孩子)從用戶獲得輸入,它一切正常, 然後我通過自定義消息發送消息給父,並且我想將消息轉發給第二個控件當我使用不能從一個控件發送自定義消息到另一個控件

SendMessage(); 

什麼happends ....

我的自定義信息的定義是這樣的:

#define WM_USERMESSAGE 0x0401 

另一個問題我已經是如何發送字符串?因爲當我通過lParam發送消息給父親 它說它的值是72,但我沒有看到我發送的文本的任何參考。

這些都是代碼段: 孩子1獲得輸入後發短信給父親:

case WM_KEYUP: 
       { 
        switch (wParam) { 
         case VK_RETURN: 
         { 
          length = GetWindowTextLength(hwnd); 
          GetWindowText(hwnd, buf,length); 
          SetWindowText(hwnd,NULL); 
          tempa = SendMessage(GetParent(hwnd), WM_USERMESSAGE,sizeof(buf),*buf); 
          return 0; 
         } 
        } 
       return 0; 
       } 

父親得到消息,並改掉轉發吧:

case WM_USERMESSAGE: 
      { 
       int tempb = SendMessage(nhwnd, WM_USERMESSAGE, wParam, (LPARAM)"Hi"); 
      } 

和孩子數2聽消息:

case WM_USERMESSAGE: 
      { 
      SetWindowText(window, "hi");//(TCHAR*)lParam); 
      return 0; 
      } 

(現在如你所見我使用靜態字符串來檢查功能是否正常工作,但我想更改它們,以便從信息中收集信息) 感謝您的幫助!

回答

0

從第一次編輯到父窗口,您的初始SendMessage()未正確發送字符串數據。您正在取消緩衝區指針,因此您只發送第一個字符(72是ASCII 'H'字符)。你需要擺脫那個解引用並按原樣傳遞緩衝區指針。如果您要發送緩衝區長度(您不使用),則需要發送GetWindowText()返回的長度,而不是緩衝區的全部大小,因此接收方確切知道緩衝區中實際有多少個字符。

試試這個:

case WM_KEYUP: 
{ 
    switch (wParam) 
    { 
     case VK_RETURN: 
     { 
      ZeroMemory(buf, sizeof(buf)); 
      length = GetWindowTextLength(hwnd); 
      if (length > 0) 
       length = GetWindowText(hwnd, buf, min(length+1, sizeof(buf))); 
      SetWindowText(hwnd, NULL); 
      tempa = SendMessage(GetParent(hwnd), WM_USERMESSAGE, length, (LPARAM)buf); 
      return 0; 
     } 
    } 
    return 0; 
} 

case WM_USERMESSAGE: 
{ 
    int tempb = SendMessage(nhwnd, WM_USERMESSAGE, wParam, lParam); 
    return 0; 
} 

case WM_USERMESSAGE: 
{ 
    SetWindowText(window, (LPTSTR)lParam); 
    return 0; 
} 

假設所有HWNDs的是有效的,則轉發應正常工作。如果消息沒有完成,那麼您的HWNDs之一無效。

+0

確實你幫了我很多與轉發:) 但仍然我不能發送一個事情到第二個子窗口我也懷疑它的關於HWW ....但我不知道是什麼讓它ivlaid,如果它是所以...這是我的完整代碼,如果你想窺視pastebin.com/3Kyh5h68(這是我的最後一個版本之前,我修改它,所以我不會有新的轉發代碼) 非常感謝! – LifePhilPsyPro 2013-02-14 19:32:05

+0

修復了一切。 這是金! – LifePhilPsyPro 2013-02-14 20:25:30

相關問題