약 20 개 (!) 년 동안 복잡한 C 프로그램을 작성했습니다. 지금까지 나는 모든면에서 당시와 마찬가지로 잘 작동했다. 아마도 윈도우 95에서 돌아갔다.이전 프로그램에서 라디오 버튼을 선택하지 않았습니다.
이제 다시 사용해야한다. 불행하게도 그 안에있는 라디오 버튼은 더 이상 제대로 작동하지 않는 것처럼 보입니다 (보통 푸시 버튼은 모두 올바르게 작동합니다). 라디오 버튼을 클릭하면 윈도우가 내 클릭을 확인하는 것과 같이 버튼의 텍스트 주변에 점선이 표시되고 단추의 원이 내 손가락이 버튼에있는 동안 회색으로 표시된다는 의견이 표시됩니다. 하지만 손가락을 떼면 선택한 버튼이 변경되지 않은 것을 알 수 있습니다.
의심의 여지는 내가 Windows 95에서 작동하지만 더 이상 최신 버전의 Windows에서 작동하지 않는 나쁜 습관이 생겨났다는 것이지만 내가 잘못한 것을 해결하는 데 어려움을 겪고 있습니다. 어떤 아이디어?
EDIT :이 프로그램에서 메시지 처리가 복잡하여 악몽 이었기 때문에 관련 코드를 추출하기가 어렵습니다. 많은 버튼이 런타임에 프로그래밍 방식으로 생성되었으며 프로그램이 다른 작동 모드에있을 때 다른 메시지 루프가 작동했습니다. 이 프로그램은 특정 유형의 실험을 실행하기위한 맞춤식 환경이었습니다. 자체적으로 내장 된 인터프리터 언어도있었습니다! 그래서 나는 "47 행의 세미콜론 대신 쉼표를 사용해야합니다."와 같은 대답을 기대하지는 않지만 "내 프로그램에서 한 번 비슷한 증상을 보았고 ....." .. 또는 아마도 "점선 된 사각형이 나타나는 것은 프로세스 AAA가 발생했지만 BBB 단계가 잘못되었을 수도 있음을 의미합니다."
편집 : 나는 라디오 버튼을 사용할 때 확인하는 간단한 두 가지가 있습니다
char *process_messages_one_at_a_time()
{
MSG msg;
int temp;
temp = PeekMessage(&msg,winh,0,0,PM_NOREMOVE);
if (temp)
{
GetMessage (&msg, NULL, 0, 0);
if (msg.message == WM_LBUTTONUP)
{
mouse_just_released_somewhere = TRUE;
}
TranslateMessage (&msg);
DispatchMessage (&msg);
}
if (button_command_waiting)
{
button_command_waiting = FALSE;
return (button_command_string);
}
else
{
return (NULL);
}
}
우리가 볼 수있는 코드가 있습니까? – ChrisF
사람들이 자신이 어떤 API를 볼 수 있도록 SSCE ([짧고, 자기 포함, 올바른 (컴파일 가능한) 예] (http://sscce.org/))를 제공해야하는 경우처럼 들립니다.)를 사용하여. 하지만 코드를 단일 라디오 버튼 및 가능한 최소 기타 코드로 줄여야합니다. MSDN에서 사용하려는 API에 대한 정보를 찾았습니까? –
나는 SSCE를 좋아하고 그 전에 많은 시간을 게시했지만,이 경우에는 하나가되면 힘들어 질 것입니다. 그러나 저는 제 코드로 돌아가서 제가 할 수있는 것을 볼 것입니다. – Mick