gpt4 book ai didi

c - 旧程序中没有选择单选按钮

转载 作者:可可西里 更新时间:2023-11-01 11:35:07 26 4
gpt4 key购买 nike

大约 20(!)年前,我编写了一个大型复杂的 C 程序。据我所知,当时它在所有方面都运行良好 - 它可能在 Windows 95 上运行。

现在我需要再次使用它。不幸的是,其中的单选按钮似乎不再正常工作(普通按钮都可以正常工作)。当我点击单选按钮时,我得到一些反馈,即 Windows 正在确认我的点击,只要我的手指放在按钮上,我就会看到按钮文本周围出现虚线并且按钮的圆圈变灰,但是当我松开手指时,我看到所选按钮没有改变。

我的怀疑是,我当时可能逃避了一些不良做法,这些做法适用于 Windows 95,但不再适用于较新版本的 Windows,但我正在努力找出我做错了什么。有什么想法吗?

编辑:很难提取相关代码,因为该程序中的消息处理是一场纠结的噩梦。许多按钮是在运行时以编程方式创建的,当程序处于不同的操作模式时,会有不同的消息循环工作。该程序是一个可定制的环境,用于运行某些类型的实验。它甚至有自己的内置解释语言!所以我不期待像“你应该在第 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);
}
}

最佳答案

使用单选按钮时需要检查两件简单的事情。首先是确保每个都设置了 BS_AUTORADIOBUTTON 属性。第二个是确保 Tab 键顺序中的第一个按钮和按钮组(通常是组框)之后的下一个控件设置了 WS_GROUP 属性,而其他按钮则清除了它。

关于c - 旧程序中没有选择单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com