aynı mesaj almak için (Rc) aşağıdakial bir kaynak dosyası var
#include <windows.h>
#include "resource.h"
IDD_ABOUT DIALOG DISCARDABLE 0, 0, 500, 106
BEGIN
DEFPUSHBUTTON "&OK", IDOK, 174, 18, 50, 14
RADIOBUTTON "Radio 1", ID_RADIOBUTTON1, 226, 18, 55, 14
END
Benim C dosyası tıkladıktan sonra aşağıdaki
#include <windows.h>
#include "resource.h"
BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_RADIOBUTTON1:
{
MessageBox(hwnd, "RadioButton 1", "111", MB_OK);
SendMessage((HWND)lParam, (UINT) BM_SETCHECK, (WPARAM) BST_CHECKED,(LPARAM)NULL);
}
return TRUE;
break;
}
break;
default:
return FALSE;
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), NULL, AboutDlgProc);
}
içeriyor içeren Diyalog kutusunun açılmasından sonra radyo butonu bir kez daha geri arama fonksiyonu tekrar tekrar aynı mesajı alır ve bu mesaj bir WM_COMMAND olan LOWORD (wParam) == ID_RADIOBUTTON1 ile aynı olur. Ancak SendMessage MessageBox'tan önce çağrılırsa, hata gerçekleşmez. Bunun belirli bir nedeni var mı?
DÜZENLEME
Ama printf ile messageBox çağrıyı yerine o zaman hata olmaz ve beklenen davranıştır ve çıkış yalnızca tek bir örneğini üretilir gibidir.
Programı yapmak için gcc ve windres kullanıyorum.
Benim OS Bu otomatik seçim işareti ayarlayacaktır (yerine RADIOBUTTON
arasında) Windows Vista (tm) Home Premium 32 bit Service Pack 2
Sen noktalı virgül kaçırdığınızı – stackptr
Maalesef ... Ben onu test etmeden kötü – user2419083
yarım itibaren bir mil öteden düzenlendi: BM_SETCHECK bir BN_CLICK uyarı üretecektir. Hangi WM_COMMAND bildirimi ile sarılır. Bu nedenle SendMessage çağrısının hareket ettirilmesi, UI iş parçacığındaki% 100 özün yanması veya ileti kutularıyla dolu bir ekranın açılması arasında seçim yapmanızı sağlar. Telsiz butonunun * kontrol edilmesi gerektiğinde sadece BM_SETCHECK'i göndererek döngüyü kesin. Bunun gibi bir şey. –