首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请问程序在MFC 的 C*App:InitInstance() 的 if (!ProcessShellCommand(cmdInfo)) 位置崩溃的原因

2013-06-19 
请教程序在MFC 的 C***App::InitInstance() 的 if (!ProcessShellCommand(cmdInfo)) 位置崩溃的原因?程序

请教程序在MFC 的 C***App::InitInstance() 的 if (!ProcessShellCommand(cmdInfo)) 位置崩溃的原因?
程序是一个 VS2008 开发在任务栏的通知程序,点击时会弹出菜单。

在启动程序时然后尽快去点击通知栏上的图标,有一定的概率会崩溃(低于10%),崩溃时调试会定位到. 
程序启动以后就不会有崩溃的现象了。


// 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo))
return FALSE;



C***App::InitInstance() 函数是自动生成的, 我没有进行修改。


现象类似于 
http://bbs.csdn.net/topics/230045646

在View的OnInitUpdate或者Document的OnNewDocument或者CMainFrame的OnCreate
这三个位置只在CMainFrame::OnCreate 有操作


在CMainFrame::OnCreate里创建了通知按钮;读取了配置文件; 启动了一个线程;


创建通知按钮代码


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);//向任务栏添加图标

mfc
[解决办法]
lz问题自己解决啦?接分!

热点排行