Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Windows использует эвристику, чтобы решить, давать или нет кнопку панели задач окну, и иногда возникает задержка, прежде чем оно может принять решение, поэтому сделать это на 100% точно будет довольно сложно. Вот грубое начало правил. Существуют современные флаги стиля, которые позволяют легко узнать, но когда эти стили отсутствуют, панель задач сводится к угадыванию.
Сначала вам понадобятся оба флага стиля окна.
LONG Style = GetWindowLong(hwnd, GWL_STYLE);
LONG ExStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
Теперь правила, есть три правила, которые являются определенными.
ExStyle & WS_EX_APPWINDOW
, то ПАНЕЛЬ ЗАДАЧ ExStyle & WS_EX_TOOLWINDOW
, то NOT_TASKBAR Стиль & WS_CHILD
тогда NOT_TASKBARОстальные - предположения:
Style & WS_OVERLAPPED
предлагает TASKBAR Style & WS_POPUP
предлагает NOT_TASKBAR, особенно если GetParent ()! = NULL
ExStyle & WS_EX_OVERLAPPEDWINDOW
предлагает TASKBAR ExStyle & WS_EX_CLIENTEDGE
предлагает NOT_TASKBARExStyle & WS_EX_DLGMODALFRAME
предлагает NOT_TASKBARI'm убедиться, что существуют другие правила для угаддачи, и на самом деле, что правила догадки изменились.
-121--3286623-У Гуса Мюллера был аналогичный вопрос: http://bugs.python.org/issue4403
-121--3603664-Различие не всегда ясно. Общая память может быть реализована через файлы, сопоставленные с памятью. Отличную запись об этом можно найти здесь (применительно к программированию C/C + +).
Насколько я понимаю, общая память строится поверх сопоставленных файлов, но эта страница, похоже, указывает на то, что возможность использования сопоставленных с памятью файлов в качестве общей памяти является условной.
Использование функции mmap() ограничено системным значением QSHRMEMCTL. Когда это системное значение равно 0, функция mmap() не может создать общее отображение с возможностью PROT_WRITE. По сути, это предотвращает создание карты памяти, которая может изменить содержимое отображаемого потокового файла. Если параметр flags указывает MAP_SHARED, параметр prot указывает PROT_WRITE, а системное значение QSHRMEMCTL равно 0, то функции mmap() будет отказано, и результатом будет ошибка с номером EACCES.