私は大規模で複雑な C プログラムを約 20(!) 年前に書きました。私が思い出す限り、当時はすべての点で問題なく動作していました。おそらく Windows 95 で実行されていました。
今、私は再びそれを使用する必要があります。残念ながら、その中のラジオ ボタンは適切に機能していないようです (通常のプッシュ ボタンはすべて正しく動作しています)。ラジオボタンをクリックすると、ボタンのテキストの周りに点線が表示され、指がボタンにある限りボタンの円が灰色になるのと同じくらい、ウィンドウがクリックを認識しているというフィードバックが得られます、しかし、指を離すと、選択したボタンが変更されていないことがわかります。
私の疑いでは、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);
}
}