Другие языки программирования и технологии

Как правильно создать и использовать radiobutton-ы на win api c++ ?Можно ли из программы узнать версию Windows ?

Здравствуйте. Как правильно создать и использовать элементы radiobutton? Если я просто создам несколько этих элементов функцией CreateWindow(), как потом при выборе одного из них на него перейдёт точка, а с других уберётся ?

Можно ли в консольной программе установить размер, положение её окна, установить другой шрифт ?

Как из программы можно узнать версию Windows (7, 8, 8.1 или 10) ? Какой функцией ?

Ещё вопрос. Нужны ли эти пути в переменной PATH :

C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Users\Admin\AppData\Local\Microsoft\WindowsApps;

Ещё вопрос. У нас есть ноутбук emachines, купленный в 2011 г. с 3 Гб RAM, 500 Гб HDD, 256 Мб дискр. видеокартой. На нём установлена Windows 7 sp1. Если в 2020 г. windows 7 перестанет поддерживаться, придётся устанавливать на него 8-ку или 10-ку. Нужно ли покупать для него RAM 8 Гб, чтобы он нормально работал на новых версиях Windows ?

Не лишние ли пути на этом ноутбуке в переменной PATH :

C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Windows Live\Shared;

Зачем эти пути нужны, для системы ?
> > Как правильно создать и использовать элементы radiobutton?

radioBtn1 = CreateWindow(L"BUTTON", L"подпись", WS_CHILD | WS_TABSTOP | WS_VISIBLE | BS_AUTORADIOBUTTON, x, y, width, height, parent,
(HMENU)ID_RBTN1, // <-- идентификатор (произвольное число), если нужен
hInstance, NULL);

Проверка состояния радиокнопки (отмечена или нет):

bool checked = SendMessage(radioBtn1, BM_GETCHECK, 0, 0) == BST_CHECKED;

Обработка клика по кнопке (в WndProc родительского окна):

case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED) {
// тут делай что нужно, HWND кнопки (по которой сделан клик) - в lParam,
// идентификатор (если он был задан в CreateWindow) - в LOWORD(wParam).
return 0;
} else return DefWindowProc(hwnd, msg, wParam, lParam);

Если нужно разделить радиокнопки на отдельные группы - используй в CreateWindow флаг WS_GROUP. Он задаётся для первой кнопки в группе. Все следующие кнопки, созданные без этого флага, будут добавлены в эту группу. Если потом создать ещё одну кнопку с флагом WS_GROUP - начнётся следующая группа и т. д. Если флага WS_GROUP нет ни у одной кнопки - то они все объединяются в одну единственную группу.

>> Если я просто создам несколько этих элементов функцией CreateWindow(), как потом при выборе одного из них на него перейдёт точка, а с других уберётся ?

Если выбран стиль BS_AUTORADIOBUTTON, точка будет переходить автоматически. Если же выбран BS_RADIOBUTTON, то переставлять точку нужно будет самому:

SendMessage(radioButton1, BM_SETCHECK, BST_CHECKED, 0);
// (BST_UNCHECKED убирает точку)
Т※
Тигран ※※※※
24 295
Лучший ответ
Научитесь пользоваться поиском в интернете. Например, поисковый запрос:
winapi get windows version
находит https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getversion
https://docs.microsoft.com/ru-ru/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getversionexa

Установить размер/положение консольного окна. Ищем
winapi set console window position
находим https://stackoverflow.com/questions/35263590/programmatically-set-console-window-size-and-position

Установка шрифта. Ищем
winapi set console window font
находим
https://docs.microsoft.com/en-us/windows/console/setcurrentconsolefontex

Что Windows 7 перестанет поддерживаться, это не значит, что она перестанет работать. До сих пор некоторые пользуются XP. Требования к железу у Win 7 и Win 10 отличаются незначительно (если вообще отличаются).