SELECT
top 1 *
FROM
table_name
WHERE
column_name IN (
SELECT
top N column_name
FROM
TABLE
ORDER BY
column_name
)
ORDER BY
column_name DESC
Я написал этот запрос для поиска N-й строки. Пример с этим запросом будет
SELECT
top 1 *
FROM
Employee
WHERE
emp_id IN (
SELECT
top 7 emp_id
FROM
Employee
ORDER BY
emp_id
)
ORDER BY
emp_id DESC
Ссылка, которую вы опубликовали, показывает единственный надежный способ распознавания сообщений мыши, генерируемых физической мышью, и тех, которые были синтезированы в ответ на прикосновение и ввод пера.
Для полноты здесь код. Код зависит от состояния, которое действует только при обработке сообщения мыши. Вызов его в любое другое время имеет неопределенное поведение:
bool IsTouchEvent() {
const LONG_PTR c_SIGNATURE_MASK = 0xFFFFFF00;
const LONG_PTR c_MOUSEEVENTF_FROMTOUCH = 0xFF515700;
LONG_PTR extraInfo = GetMessageExtraInfo();
return ( ( extraInfo & c_SIGNATURE_MASK ) == c_MOUSEEVENTF_FROMTOUCH );
}
Дополнительные WM_MOUSEMOVE
сообщения, которые вы наблюдаете, являются артефактом того, как система реализует свою внутреннюю бухгалтерскую отчетность. Например, если окно отображается или скрыто, курсор мыши может находиться за другим окном и должен быть пересчитан. Для этого система синтезирует искусственное сообщение WM_MOUSEMOVE
.
Этот эффект объясняется в блоге Raymond Chen: Почему я получаю ложные сообщения WM_MOUSEMOVE? .
WM_MOUSEMOVE
не связаны с сенсорным вводом. Они будут генерироваться в системах, где нет сенсорного устройства ввода. Если вам нужно найти способ отфильтровать эти сообщения, вам, вероятно, придется задать новый вопрос. – IInspectable 29 April 2015 в 08:25WM_MOUSEMOVE
вообще не связан с сенсорным входом. Это Давайте обернем все, отправив сообщение поддельного движения мыши i>, которое также будет создано в системах без касания. Конечно, это мешает при интерпретации сенсорного ввода, но это то же самое сообщение, которое вы получаете, когда прикладываете другое окно на передний план с помощью мыши. – IInspectable 20 January 2017 в 20:28