SendMessage işlevi doğrudan penceresinin yordam için bir ileti göndermek için kullanılır. SendMessage pencere yordamı çağırır ve ileti işleme ve bir sonuca dönmek bu yordamı için bekler.
Bir ileti sisteminde herhangi bir pencereyi gönderilebilir; gerekli olan şey bir pencere tanıtıcısı. Sistemi, hangi pencere yordamı, ileti almalısınız belirlemek için tanıtıcı kullanır.
Bir pencere yordamı, başka bir iş parçacığı tarafından gönderilen ileti işleme önce ilk InSendMessage işlevini çağırmalıdır. true döner, pencere yordamı ReplyMessage önce denetim, verim iplik aşağıdaki örnekte gösterildiği gibi neden olan herhangi bir işlevi çağırmalıdır.
durumda wm_user + 5: Eğer (InSendMessage()) ReplyMessage(TRUE);
İletişim kutusu (hInst, "MyDialogBox", hwndMain, (dlgproc) MyDlgProc);
sonu
İletişim kutusu denetimleri çeşitli iletiler gönderilebilir. Bu denetim iletilerinin görünümünü, davranış ve içerik denetimleri ayarlamak veya denetimleri hakkında bilgi almak. Örneğin, CB_ADDSTRING ileti dize bir açılan kutu için ekleyebilir ve bm_setcheck iletisi onay kutusu veya seçenek düğmesini onay durumunu ayarlayabilirsiniz.
Bir denetime denetim tanıtıcısı ve denetimi içeren iletişim kutusu penceresini tanıtıcı belirterek, bir mesaj göndermek için SendDlgItemMessage işlevini kullanın. Bir iletişim kutusu yordam, alınan aşağıdaki örnek, bir dize açılan kutu düzenleme denetimi kendi liste kutusuna kopyalar. Örnek, Birleşik giriş kutusu için CB_ADDSTRING mesaj göndermek için SendDlgItemMessage kullanır.
Hwnd hwndCombo;
int cTxtLen;
pstr pszMem;
switch (uMsg) {wm_command durumda: geçiş (LOWORD(wParam)) {IDD_ADDCBITEM durumda: / / açılan kutu ele almak ve / / Düzenle dizenin uzunluğu kontrol / / açılan kutu.
hwndCombo = GetDlgItem (hwndDlg, IDD_COMBO);
cTxtLen = GetWindowTextLength(hwndCombo);
/ / String ve kopya için bellek ayrılamadı / / belleğe dize.
pszMem (pstr) null VirtualAlloc((LPVOID) (dword) = (cTxtLen + 1), MEM_COMMIT, PAGE_READWRITE);
GetWindowText (hwndCombo, pszMem, cTxtLen + 1);
/ / String için liste kutusunda add / / açılan kutu ve dizeden kaldırmak / / açılan kutu denetimi Düzenle.
Eğer (* pszMem! = null) {SendDlgItemMessage (hwndDlg, IDD_COMBO, CB_ADDSTRING, 0, (dword) ((lpstr) pszMem));
SetWindowText (hwndCombo, (lpstr) null);
} / / Özgür bellek ve dönüş.
VirtualFree (pszMem, 0, mem_release);
true döndürür;
/ / / / Diğer iletişim kutusunda komutları işlemek.
/ /} / / / / Diğer iletişim kutusu iletilerini işleme.
//
}