Как получить ширину и высоту из окна CreateWindowEx()? C++

Было бы эффективнее делать это на чистом SQL, а не на PHP. Вот подход, использующий оконные функции, доступный в MySQL 8.0.

Вы можете использовать подзапрос, чтобы подсчитать, сколько title дубликатов существует для каждой записи, и назначить ранг каждой записи в группах записей, имеющих одинаковые title. Затем вы можете JOIN подзапрос с таблицей для обновления. Если существует более одной записи, вы можете добавить номер строки к каждой записи в группе.

Запрос:

UPDATE arts a
INNER JOIN (
    SELECT 
        id, 
        title, 
        COUNT(*) OVER(PARTITION BY title) cnt,
        ROW_NUMBER() OVER(PARTITION BY title ORDER BY id) rn
    FROM arts
) b ON a.id = b.id
SET a.title = CONCAT(a.title, b.rn)
WHERE cnt > 1;

Демонстрация на DB Fiddle

Пример данных:

| id  | title  |
| --- | ------ |
| 10  | silver |
| 20  | gold   |
| 30  | gold   |
| 40  | bronze |
| 50  | gold   |
| 60  | bronze |

Результаты после запустив запрос на обновление:

| id  | title   |
| --- | ------- |
| 10  | silver  |
| 20  | gold1   |
| 30  | gold2   |
| 40  | bronze1 |
| 50  | gold3   |
| 60  | bronze2 |

10
задан Brian R. Bondy 5 March 2009 в 16:40
поделиться

4 ответа

Используйте GetWindowRect. Вычтите право слева, чтобы заставить ширину и нижнюю часть от вершины получать высоту.

RECT rect;
if(GetWindowRect(hwnd, &rect))
{
  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
}

Как примечание стороны, если Вы хотели бы клиентскую область вместо всего окна. Можно использовать GetClientRect. Для другой информации об окне можно использовать GetWindowInfo.

25
ответ дан 3 December 2019 в 15:53
поделиться

Вы попробовали GetWindowRect() или GetWindowInfo() который возвращает a WINDOWINFO структура?

1
ответ дан 3 December 2019 в 15:53
поделиться

Я полагаю, что Вы ищете GetWindowInfo

Пример:

HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
  ...
}
1
ответ дан 3 December 2019 в 15:53
поделиться

Данный нет никакого признака, почему Вам нужен размер, и что размер может измениться, если стиль окна установлен включать атрибуты изменяемого размера [и пользователь изменяет размер использования окна, минимизируют/максимизируют/восстанавливают, или перетаскивает край окна], Ваш самый безопасный выбор состоит в том, чтобы включать обработчика сообщений для WM_SIZE и использовать wparam и lparam значения параметров для определения размеров окна. Таким образом, Вы будете всегда знать текущий размер. WM_SIZE называют в последовательности создания окна сообщения сообщений.

0
ответ дан 3 December 2019 в 15:53
поделиться
Другие вопросы по тегам:

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