Что такое сообщение WndProc 24 - PullRequest
       10

Что такое сообщение WndProc 24

1 голос
/ 08 февраля 2012

В настоящее время я пытаюсь запустить существующий проект VB.NET. Исключение нулевого указателя выдается в сообщении WndProc, но трассировка стека ничего мне не дает. Я могу поместить точку останова в код конструктора автозапуска формы, но когда я прохожу через нее, запускается исключение NULL-указателя через функцию WndProc. Верхние методы - это методы Windows. Единственная подсказка, которую я имею, - это параметр Message с Msg = 24 и WParam = 1. Я думаю, что HWnd = 5178884 не помогает.

Я вставляю трассировку стека на случай, если у кого-нибудь появятся идеи. Примечание : я замаскировал MyNamespace, MyBaseForm и MyFormA, потому что исходный код является частным. Это работает в Visual Studio 2008 в .NET Framework 3.5

MyNamespace.Forms.MyBaseForm.WndProc(Message& m)\r\n   
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\r\n   
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\r\n   
System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n   
System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)\r\n   
System.Windows.Forms.Control.SetVisibleCore(Boolean value)\r\n   
System.Windows.Forms.Form.SetVisibleCore(Boolean value)\r\n   
System.Windows.Forms.Control.set_Visible(Boolean value)\r\n   
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)\r\n   
System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)\r\n   
System.Windows.Forms.Application.Run(ApplicationContext context)\r\n   
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()\r\n   
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()\r\n   
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)\r\n   
MyFormA.My.MyApplication.Main(String[] Args) 
17d14f5c-a337-4978-8281-53493378c1071.vb:Line 81\r\n   
System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)\r\n   
System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)\r\n   
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()\r\n   
System.Threading.ThreadHelper.ThreadStart_Context(Object state)\r\n   
System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   
System.Threading.ThreadHelper.ThreadStart()"

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

WM_SHOWWINDOW = 24

... не то чтобы это действительно помогло. Похоже, что последний бит вашего кода, который будет выполнен, это строка 81 , я бы изучил это.

0 голосов
/ 17 февраля 2012

Я просто хочу дать другой ответ о том, как узнать, откуда возникла ошибка, даже если трассировка стека ничего вам не сказала (реальная проблема, почему я спросил, что такое WndProc 24).На тот случай, если у других людей возникла такая же проблема.

Я использовал меню «Необработанное исключение через Отладка> Исключения» в Visual Studio.См. ссылку для подробностей.

Сохранение точки для С.Барлоу, когда он ответил на первоначальный вопрос.

...