из обсуждения этого чата , ошибка была в цикле for
for (int i = 0; i < words.size(); i++)
, где words.size()
было 0, поэтому исправить это Вы должны использовать
for (int i = 0; i <= 260; i++)
, изменив words.size()
на 260, где 260 - максимальное количество слов, которые пользователь может ввести.
Предупреждение было предложено, чтобы можно было выполнить это путем вызова SetParent и установки окна, чтобы быть ребенком Рабочего стола. Если Вы делаете это, Вы заставляете Менеджер окон Win32 комбинировать входную очередь Рабочего стола к Вашему дочернему окну, это - плохая вещь - Raymond Chen объясняет почему.
Кроме того, имейте в виду, что вызов SetWindowPos с HWND_BOTTOM является неполным. Необходимо сделать это каждый раз, когда окно изменяет zorder. Обработайте событие WM_WINDOWPOSCHANGING, посмотрите на SWP_NOZORDER для большего количества информации.
SetWindowPos может сделать окна AlwaysOnTop. Скорее всего, это может дать противоположный результат. Попробуйте что-то вдоль этих строк:
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X,
int Y, int cx, int cy, uint uFlags);
public const uint SWP_NOSIZE = 0x0001;
public const uint SWP_NOMOVE = 0x0002;
public const uint SWP_NOACTIVATE = 0x0010;
public const int HWND_BOTTOM = 1;
SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
Примечание:
Править: Сделанный некоторый поиск вдоль этих строк, чтобы подтвердить, добьется ли это цели и нашло что-то интересным - дубликат.