Глобально прервите перемещение окна

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

<?php
require_once ( 'username.php' );
if (isset($_POST)) {
  $textfield = $_POST['textfield']; // this will get you what was in the
                                    // textfield if the form was submitted
}
?>

<form name="form1" method="post" action="<?php echo($_SERVER['PHP_SELF']) ?">
  <p>Your username is: <?php echo(username()) ?></p>
  <p>
    <label>
      <input type="text" name="textfield" id="textfield">
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit">
    </label>
  </p>
</form>

Это отправит результаты на той же странице. В таким образом, первый раз Вы отображаете страницу, только пустую форму показывают, если Вы нажимаете на, отправляют, поле текстового поля будет в $textfield переменная и Вы можете отобразить его снова, как Вы хотите.

Я не знаю если username() функция, как предполагалось, возвратила Вас URL того, куда необходимо отправить результаты, но это - то, что Вы хотели бы в action атрибут Вашей формы. Я подавил результат в демонстрационном абзаце, таким образом, Вы видите, как можно отобразить результат. Посмотрите, что "Ваше имя пользователя является..." частью.


//Редактирование:

Если Вы хотите отправить значение, не оставляя страницу, Вы хотите использовать Ajax. Сделайте поиск на jQuery на StackOverflow или на Google.

Вы, вероятно, хотели бы иметь свой возврат функции имя пользователя вместо эха это все же. Но если Вы абсолютно хотите повторить его от функции, просто назовите его как этот <?php username() ?> в Вашей HTML-форме.

Я думаю, что необходимо будет понять поток процесса клиент-сервер страниц прежде, чем идти далее. Скажем, то, что пример кода выше называют form.php.

  1. Ваш form.php называют.
  2. form.php генерирует HTML и отправляется в браузер клиента.
  3. Клиент только видит получающуюся HTML-форму.
  4. Когда пользователь нажимает кнопку, у Вас есть два варианта: a) позвольте браузеру сделать свою обычную вещь, так отправьте значения в полях формы к странице, указанной в действии (в этом случае, URL определяется PHP_SELF, который является текущим page.php). Или b) используйте JavaScript для продвижения этих данных к странице, не обновляя страницу, это обычно называют Ajax.
  5. Страница, в Вашем случае, это могло быть изменено на username.php, затем проверит против базы данных, если имя пользователя будет существовать, и затем Вы хотите повторно создать HTML, который содержит значения, в которых Вы нуждаетесь, назад к шагу 1.
6
задан Joel Coehoorn 9 December 2011 в 15:33
поделиться

2 ответа

Хм, я бы подумал, что HCBT_MOVESIZE - это именно то, что вам нужно, учитывая, что MSDN говорит о перехватах CBT:

The system calls this function before activating, creating, destroying,
minimizing, maximizing, moving, or sizing a window.

и в частности:

HCBT_MOVESIZE
    A window is about to be moved or sized.

(эти цитаты были взяты из http://msdn.microsoft.com/en-us/library/ms644977%28VS.85%29.aspx )

... так что я бы подумал, что вы получите HCBT_MOVESIZE звоните вовремя. Функция ловушки, которая обрабатывает HCBT_MOVESIZE, также может возвращать целое число, чтобы система могла определить, разрешена ли операция или ее следует предотвратить. Следовательно, учитывая, что ловушка HCBT_MOVESIZE должна иметь опцию для предотвращения операции, я бы сказал, что она вызывается до того, как произошло событие перемещения.

Вы действительно уверены, что функция ловушки вызывается после события перемещения ? Если вы выполняете вызов GetWindowRect для конкретного дескриптора в своей функции-перехватчике,

1
ответ дан 17 December 2019 в 20:33
поделиться

Крючки довольно тяжелые. Вы можете использовать их только тогда, когда вам это абсолютно необходимо.

Тем не менее, вы можете использовать один из основных хуков просто как способ войти в процесс. Оказавшись в процессе, вы можете создать подкласс интересующего вас окна и обрабатывать сообщения об изменении размера в вашем подклассе proc вместо того, чтобы пытаться поймать все на уровне ловушки.

В зависимости от того, что вы хотите сделать в ответ на изменение размера , вам может понадобиться межпроцессное взаимодействие.

1
ответ дан 17 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

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