Ejemplo n.º 1
0
bool CMainFrame::MakeWave(const WAVEGEN_PARMS& Parms)
{
	POSITION	pos = theApp.GetFirstDocTemplatePosition();
	CDocTemplate	*pTpl = theApp.GetNextDocTemplate(pos);
	CWaveShopDoc	*pDoc = DYNAMIC_DOWNCAST(CWaveShopDoc, pTpl->CreateNewDocument());
	if (pDoc == NULL)
		return(FALSE);
	bool	retc, canceled;
	{
		CProgressDlg	ProgDlg;
		if (!ProgDlg.Create())	// create progress dialog
			AfxThrowResourceException();
		ProgDlg.SetWindowText(LDS(IDS_MAIN_GENERATING_AUDIO));
		retc = CWaveGenDlg::MakeWave(Parms, pDoc->m_Wave, &ProgDlg);
		canceled = ProgDlg.Canceled();
	}	// destroy progress dialog
	if (!retc) {	// if generation failed
		if (!canceled)	// if user canceled
			AfxMessageBox(IDS_MAIN_CANT_MAKE_WAVE);
		return(FALSE);
	}
	CDocument	*pEmptyDoc = pTpl->OpenDocumentFile(NULL);	// create new view
	if (pEmptyDoc == NULL || m_View == NULL)
		return(FALSE);
	CString	title = pEmptyDoc->GetTitle();
	pEmptyDoc->RemoveView(m_View);	// remove empty document from view
	pDoc->SetTitle(title);	// copy empty document's title to generated document
	pDoc->AddView(m_View);	// add generated document to view
	m_View->OnInitialUpdate();
	OnActivateView(m_View);
	// view is still linked to empty document's undo manager; must relink
	m_View->SetUndoManager(&pDoc->m_UndoMgr);	// link view to undo manager
	pDoc->m_UndoMgr.SetRoot(m_View);	// link undo manager to view
	return(TRUE);
}
Ejemplo n.º 2
0
bool CFindServersDlg::FindServersAddressRange()
{
	UINT	start, end;
	if (!GetIPAddrRange(m_RangeStart, m_RangeEnd, start, end)) {
		AfxMessageBox(IDS_FSRV_BAD_IP_RANGE);
		return(FALSE);
	}
	if (!m_Done.Create(NULL, FALSE, FALSE, NULL))
		return(FALSE);
	m_Kill = FALSE;
	AfxBeginThread(RcvThread, this);
	bool	retc = TRUE;
	try {
		CProgressDlg	dlg;
		dlg.Create();
		dlg.SetRange(start, end);
		dlg.SetWindowText(LDS(IDS_FSRV_PROGRESS_CAP));
		for (UINT i = start; i <= end; i++) {
			dlg.SetPos(i);
			if (!IsBroadcastAddr(i)) {	// exclude broadcast address
				SOCKADDR_IN	addr;
				addr.sin_family = AF_INET;
				addr.sin_port = htons(m_PortNumber);
				addr.sin_addr.s_addr = ntohl(i);
				m_Finder->RequestReply(addr);	// request reply
			} 
			if (dlg.Canceled()) {
				retc = FALSE;
				break;
			}
		}
		CWaitCursor	wc;
		if (retc)
			Sleep(1000);	// give last replies a chance to come in
		m_Kill = TRUE;
		WaitForSingleObject(m_Done, INFINITE);
	}
	catch (const WError& e) {
		CString	msg(e.what());
		AfxMessageBox(msg);
		return(FALSE);
	}
	return(retc);
}