Пример #1
0
void CHostList::OnCommander()
{
	POSITION pos = GetFirstSelectedItemPosition();
	int index = GetNextSelectedItem(pos);

	if (pos < 0)
		return;

	CLIENT_INFO* info;
	info = (CLIENT_INFO*)GetItemData(index);

	CCmdDlg *dlg = NULL;

	if (m_FuncMap[info->clientid].cmd == NULL)
	{
		dlg = new CCmdDlg();
		dlg->InitModule(info->clientid);
		dlg->Create(IDD_DIALOG_CMD);

		m_FuncMap[info->clientid].cmd = dlg;
	}
	else
	{
		dlg = m_FuncMap[info->clientid].cmd;
	}

	dlg->ShowWindow(TRUE);
}
Пример #2
0
// CPanelDlg 消息处理程序
void CPanelDlg::InitInsideModule()
{
	CRect rs;
	m_TabCtrl.GetClientRect(&rs);
	rs.top += 21;

	CFileMgrDlg* FileDlg = new CFileMgrDlg;
	CTransferDlg* TransDlg = new CTransferDlg;
	CCmdDlg* CmdDlg = new CCmdDlg;

	m_MemList.push_back(FileDlg);
	m_MemList.push_back(TransDlg);
	m_MemList.push_back(CmdDlg);

	MODULE_INFO fileInfo = {0};
	MODULE_INFO transInfo = {0};;
	MODULE_INFO cmdInfo = {0};;

	fileInfo.lpParameter = (CDialogEx*)FileDlg;
	fileInfo.isInside = TRUE;
	fileInfo.inside_init = FileDlg->InitModule;
	fileInfo.handler = FileDlg->HandleModuleMsg;

	transInfo.lpParameter = (CDialogEx*)TransDlg;
	transInfo.isInside = TRUE;
	transInfo.inside_init = TransDlg->InitModule;
	transInfo.handler = TransDlg->HandleModuleMsg;

	cmdInfo.lpParameter = (CDialogEx*)CmdDlg;
	cmdInfo.isInside = TRUE;
	cmdInfo.inside_init = CmdDlg->InitModule;
	cmdInfo.handler = CmdDlg->HandleModuleMsg;

	m_TabCtrl.InsertItem(0,_T("File Manager"));
	m_TabCtrl.InsertItem(1,_T("Transfer"));
	m_TabCtrl.InsertItem(2,_T("Shell"));

	m_moduleMap.insert(MAKE_PAIR(ModuleMap,0,fileInfo));
	m_moduleMap.insert(MAKE_PAIR(ModuleMap,1,transInfo));
	m_moduleMap.insert(MAKE_PAIR(ModuleMap,2,cmdInfo));

	CLIENT_INFO info;
	GetClientInfo(m_clientid,&info);
	FnModuleNotifyProc func = \
		ClientControlPanelManager::GetInstanceRef().HandleModuleMsg;

	ModuleMap::iterator it = m_moduleMap.begin();

	for (; it != m_moduleMap.end() ; it++)
	{
		MODULE_INFO& modinfo = it->second;

		if (it->second.isInside)
			modinfo.inside_init(m_clientid,info,func,modinfo.lpParameter);
	}

	FileDlg->Create(IDD_DIALOG_FILE);
	TransDlg->Create(IDD_DIALOG_TRANSFER);
	CmdDlg->Create(IDD_DIALOG_CMD);

	CWnd* pWnd = CWnd::FromHandle(m_TabCtrl.GetSafeHwnd());

	FileDlg->SetParent(pWnd);
	TransDlg->SetParent(pWnd);
	CmdDlg->SetParent(pWnd);

	it = m_moduleMap.begin();

	for (; it != m_moduleMap.end() ; it++)
	{
		MODULE_INFO& modinfo = it->second;
		modinfo.hWnd = ((CDialogEx*)modinfo.lpParameter)->GetSafeHwnd();
	}

	TransDlg->MoveWindow(&rs);
	FileDlg->MoveWindow(&rs);
	CmdDlg->MoveWindow(&rs);
}
Пример #3
0
void CCmdDlg::HandleModuleMsg( LPCTSTR clientid,UINT nMsg, LPVOID lpContext, LPVOID lpParameter )
{
	CCmdDlg* lpDlg = (CCmdDlg*)lpParameter;
	return lpDlg->HandleModuleMsgProc(nMsg,lpContext,lpParameter);
}