请教程序在MFC 的 C***App::InitInstance() 的 if (!ProcessShellCommand(cmdInfo)) 位置崩溃的原因?
程序是一个 VS2008 开发在任务栏的通知程序,点击时会弹出菜单。
在启动程序时然后尽快去点击通知栏上的图标,有一定的概率会崩溃(低于10%),崩溃时调试会定位到.
程序启动以后就不会有崩溃的现象了。
// 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo))
return FALSE;
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this->m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_MYNOTIFYMSG;
//file://用户自定义的消息,即鼠标在任务栏上程序图标上动作时图标发送的消息
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
// strncpy(tnd.szTip,"Prog", sizeof(tnd.szTip) - 1);//图标提示
strncpy(tnd.szTip,m_sMenuNotifyIcon.c_str(), sizeof(tnd.szTip) - 1);
Shell_NotifyIcon(NIM_ADD,&tnd);//向任务栏添加图标