15,979
社区成员
发帖
与我相关
我的任务
分享
MsgHead msg;
msg.dwcmd = CMD_SHELL;
msg.dwSize = sizeof(MSG_CMDLINKE)-1;
POSITION pos = m_list.GetFirstSelectedItemPosition(); //CListCtrl迭代器
while(pos) //循环
{
int nItem = m_list.GetNextSelectedItem(pos);
Per_Io_Data* Lp_Io_Datat = (Per_Io_Data*)m_list.GetItemData(nItem);
miocp.PostTcpSend(Lp_Io_Datat,&msg,MSG_CMDLINKE);
/////////////////////////////////////////
//主控端循环发送请求
//
}
case CMD_SHELLRUN:
// m_cmd = new CshellDlg(this,Lp_Io_Data);
/* CshellDlg* pShellDlg = new CshellDlg;
//m_cmd->Create(IDD_CCMDSHELL, this);
// 设置父窗口为卓面
pShellDlg->Create(IDD_CCMDSHELL,GetDesktopWindow());
pShellDlg->ShowWindow(SW_SHOW);*/
//PostMessage(WM_SHELLDLGSHOW,(DWORD)Lp_Io_Data, 0);
pShellDlg->Create(IDD_CCMDSHELL, GetDesktopWindow());
pShellDlg->ShowWindow(SW_SHOW);
pShellDlg->UpdateWindow();
case CMD_SHELLRUN:
PostMessage(WM_SHELLDLGSHOW,(DWORD)Lp_Io_Data, 0);/*一定要用PostMessage
去创建窗口!*/
break;
LRESULT CAVClientDlg::OnShellDlgShow(WPARAM wParam, LPARAM lParam)
{
// pInput = (LPSocketInput)wParam;
Per_Io_Data *Lp_Io_Data =(Per_Io_Data*)wParam;
CshellDlg *pShellDlg = new CshellDlg(this,Lp_Io_Data);
pShellDlg->Create(IDD_CCMDSHELL, GetDesktopWindow());
pShellDlg->ShowWindow(SW_SHOW);
//pShellDlg.UpdateWindow();
//delete pInput;
return 0;
}
最后这个问题我还是解决了,对于我这种情况得用PostMessage去创建窗口,对mfc的消息机制不熟,具体原因我也不明白