Как добавить пользовательский объект к системному меню в C++?

После прочтения вашего разъяснения и изучения вашего кода, вот что я могу предложить.

<p id="correctScreen">Correct Answers:<span id="correctScore"></span></p>
<p id="" style="font-size: 20;color: azure;margin-left: 60%;"></p>
<p id="wrongScreen">Wrong Answers:<span id="wrongScore"></span></p>
<p id="secondPara" style="font-size: 20;color: azure; margin-left: 60%;"></p>

Правильный интервалScore - это место, где вы хотите, чтобы появился текст «Вы получили ...», и вы могли бы сделать это, просто заменив $("#correctScore").text(score); на $("#correctScore").text("You got question 1 right"); (И, очевидно, вы захотите переименовать свой элементы и переменные, поэтому они имеют смысл при замене.)

Единственная проблема заключается в том, что следующая строка текста (текст для вопроса 2) будет выровнена по вертикали с «Правильными ответами», а не с вопросом 1 текст. Самый простой способ исправить это (и не совсем профессионально) - добавить группу из &nbsp символов для отступа в вашем тексте. Ниже приведены некоторые другие (лучшие) варианты.

Используя только HTML-разметку, вы можете заменить span на блочный элемент, например, div (и изменить correctScreen с p на div, чтобы эта работа работала). Уловка в том, что переключение на элемент блока также означает, что содержимое будет начинаться с новой строки, поэтому они не будут рядом с «Правильными ответами», как вам хотелось бы - если вы не стилизовали элемент блока с помощью float: left ( и сделал другие изменения, связанные с этим, такие как указание атрибута width для ваших элементов div.)

Или, так как ваша страница имеет начальную загрузку, вы можете избежать обработки (некоторых из) этих деталей самостоятельно и получить два элемента div. появляться рядом, выполняя что-то вроде этого:

<div class="row">
  <div class="col-md-4" id="spacer"></div>
  <div class="col-md-4" id="correctAnswersIntro">Correct answers:</div>
  <div class="col-md-4" id="correctAnswersList">You got question 1 right<br></div>
</div>
5
задан Chris Jester-Young 5 October 2008 в 10:55
поделиться

4 ответа

Для Windows другой способ получить окна верхнего уровня (помимо EnumWindows, который использует обратный вызов) состоит в том, чтобы получить первого ребенка рабочего стола и затем получить все его одноуровневые элементы:

HWND wnd = GetWindow(GetDesktopWindow(), GW_CHILD);
while (wnd) {
    // handle 'wnd' here
    // ...
    wnd = GetNextWindow(wnd, GW_HWNDNEXT);
}

Что касается получения системного меню, используйте GetSystemMenu функция, с ЛОЖЬЮ как второй аргумент. GetMenu упомянутый в других ответах возвращает нормальное меню окна.

Обратите внимание, однако, что при добавлении пользовательского элемента меню к окну внешнего процесса легко, отвечание на выбор того объекта немного хитро. Необходимо будет или ввести некоторый код к процессу, чтобы смочь разделить окно на подклассы или установить глобальный рычаг (вероятно, a WH_GETMESSAGE или WH_CBT введите) контролировать WM_SYSCOMMAND сообщения.

8
ответ дан 14 December 2019 в 01:21
поделиться

После того как у Вас есть высокоуровневый дескриптор другого окна, Вы можете называть GetMenu (), чтобы получить системное меню Окна и затем изменить его, например:

HMENU hMenu = GetMenu(hwndNext);
1
ответ дан 14 December 2019 в 01:21
поделиться

Можно использовать EnumWindows () для перечисления высокоуровневого Windows.

У меня нет определенного ответа для второй части Вашего вопроса, но если Вы разделяете окно на подклассы, я предполагаю, что можно изменить системное меню.

Править: или сделайте то, что сказал Chris: назовите GetMenu ()

0
ответ дан 14 December 2019 в 01:21
поделиться

Ре: обновление - обратите внимание на то, что даже Microsoft Windows не требует, чтобы окна имели системное меню. GetMenu () может возвратиться 0. Необходимо будет прервать создание окна также, потому что каждое новое главное окно, по-видимому, нуждается в нем также.

Кроме того, что Вы предлагаете, довольно навязчиво к другим приложениям. Как Вы собираетесь удостовериться, чтобы они не повреждались, когда Вы изменяете их меню? И как Вы собираетесь удостовериться, чтобы Вы подавили сообщения? В частности, как Вы удостоверитесь, чтобы Вы прервали их, прежде чем кто-либо еще будет видеть их? Чтобы заключить Raymond Chen в кавычки, вообразите то, что происходит, если две программы попробовали бы это.

0
ответ дан 14 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: