Открываю в ArcMap свою форму из dll-ки(С#), как правильно указать для него родительское окно ArcMap-а? (Чтобы оно сворачивалось вместе с ArcMap-ом, не висело в трее и т.п.)
На оф. форуме нашел трюк с SetWindowLongA, так и сделал:
//объявляю
[System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLongA(int hwnd, int nIndex, int dwNewLong);
...
pMainForm = new MainForm();
SetWindowLongA(pMainForm.Handle.ToInt32(), GWL_HWNDPARENT, m_application.hWnd);
pMainForm.ShowDialog();
где m_application это хук IApplication в ArcMap, а pMainForm - сама моя форма.
Проблема в том что в 1 из 10 случаев при открытии формы срабатывает неперехватываемое исключение:
Попытка чтения или записи в защищённую память. Это часто свидетельствует о том, что другая память повреждена
и ArcGIS приходится "снимать" в диспетчере задач.
Подскажите пожайлуста где я ошибся 8-)
С# 2008 Express SP1, ArcGIS 9.3 SP1, WinXP