⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabpageview.cpp

📁 此程序用到了,ADO连接ACCESS数据库,切分窗口,以及不同视图之间进行通信.List Control和Tree Control,用户UI线程等技术.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	GetDlgItem(IDC_EDIT_CONDITION)->MoveWindow(CRect(Edit_Rect.left,Edit_Rect.top,Button_Rect.left-10,
		Edit_Rect.bottom));
	//改变列表框的大小
	GetDlgItem(IDC_LIST_RESULT)->GetWindowRect(&Tree_Rect);
	ScreenToClient(&Tree_Rect);
	GetDlgItem(IDC_LIST_RESULT)->MoveWindow(CRect(Tree_Rect.left,Tree_Rect.top,
		TabPage_Rect.right-10,Check_Rect.top-10));
	//再次得到列表控件的大小
/*	m_CtrListResult.GetWindowRect(&List_Rect);
	ScreenToClient(&List_Rect);
	for (k=0;k<7;k++)
	{
		m_CtrListResult.SetColumnWidth(i,List_Rect.Width()/7);
	}*/
	// Do not call CFormView::OnPaint() for painting messages
}

void CTabPageView::AddTabPage()
{
	for (int i=0;i<2;i++)
	{
		m_CtrChooseBook.InsertItem(i,TabPage[i]);
	}
}

void CTabPageView::CreateBookTree()
{	
	HTREEITEM hItem,hSubItem;
	hItem = m_CtrBookClass.InsertItem("时代圣典图书类别",TVI_ROOT);
	m_CtrBookClass.SetBkColor(RGB(247,247,255));
	m_CtrBookClass.SetTextColor(RGB(0,0,255));
	for (int k=0;k<22;k++)
	{
		hSubItem = m_CtrBookClass.InsertItem(SDClass[k].Title,0,0,hItem);
		for (i=0;i<SDClass[k].Length;i++)
		{
			m_CtrBookClass.InsertItem(SDClass[k].pClass[i],1,1,hSubItem);
		}
	}
}

void CTabPageView::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
{
	CFormView::OnWindowPosChanging(lpwndpos);
	
	// TODO: Add your message handler code here
	//禁止视图类的滚动条
	ShowScrollBar(SB_BOTH,FALSE);
	ModifyStyle(WS_HSCROLL,0,SWP_DRAWFRAME);
}

void CTabPageView::OnSelchangeTabChoosebook(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	switch(m_CtrChooseBook.GetCurSel())
	{
	case 0:
		m_CtrBookClass.ShowWindow(SW_SHOW);
		GetDlgItem(IDC_STATIC_FILED)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_RADIO1)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_RADIO2)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_RADIO3)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_RADIO4)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_EDIT_CONDITION)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_SELECT)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_LIST_RESULT)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_CHECK_EQUAL)->ShowWindow(SW_HIDE);
		//GetDlgItem(IDC_CHECK_LIKE)->ShowWindow(SW_HIDE);
		break;
	case 1:
		m_CtrBookClass.ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC_FILED)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_RADIO1)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_RADIO2)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_RADIO3)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_RADIO4)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_EDIT_CONDITION)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_BUTTON_SELECT)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_LIST_RESULT)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_CHECK_EQUAL)->ShowWindow(SW_SHOW);
		//GetDlgItem(IDC_CHECK_LIKE)->ShowWindow(SW_SHOW);
		break;
	}
	*pResult = 0;
}

void CTabPageView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	UINT flag = 0;
	POINT pt;
	GetCursorPos(&pt);
	m_CtrBookClass.ScreenToClient(&pt);
	HTREEITEM hti = m_CtrBookClass.HitTest(pt,&flag);
	m_CtrBookClass.SelectItem(hti);
	CWnd* ipWnd = GetDlgItem(IDC_TREE_BOOKCLASS);
	if (hti&&(m_CtrChooseBook.GetCurSel()==0))
	{
		CMenu menu;
		menu.LoadMenu(IDR_TREERIGHT_MENU);
		menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
	}
}

void CTabPageView::OnTreerightAdd() 
{
	// TODO: Add your command handler code here
	HTREEITEM hItem;
	//得到选中节点的句柄
	hItem = m_CtrBookClass.GetSelectedItem();
	//得到节点的内容提
	strItemDate = m_CtrBookClass.GetItemText(hItem);
	//去掉左边的空格
	strItemDate.TrimLeft();
	//去掉右边的空格
	strItemDate.TrimRight();
	m_pRunDlg->SetCycleStatus(FALSE);
	m_pRunDlg->SetRunMessage("正在打开数据库......");
	m_pRunDlg->ShowWindow(SW_SHOW);
	//this->m_pBookThread = new CBookThread(this);
	//this->m_pBookThread->CreateThread(CREATE_SUSPENDED);
	//VERIFY(this->m_pBookThread->SetThreadPriority(THREAD_PRIORITY_NORMAL));
	//this->m_pBookThread->ResumeThread();
	AddRecordToList(strItemDate);
}
void CTabPageView::AddRecordToList(CString strItemText)
{
	ADOConn mydb;
	_RecordsetPtr m_pRecordSet;
	MSG message;
	CString SQLCommand;
	CString strField = _T("");
	_variant_t var;
	int k = 0;
	CMainFrame *pFrame = (CMainFrame*)this->GetParent()->GetParent();
	CBookListView* pBookList = (CBookListView*)pFrame->GetPaneView(0,1);
	if (!mydb.OpenDB())
	{
		m_pRunDlg->ShowWindow(SW_HIDE);
		AfxMessageBox("没能打开安装目录下的cndnynk.mdb\n请确认文件是否存在!");
		return;
	}

	if (IsFirstClass(strItemText))
	{
		SQLCommand.Format("SELECT BOOKID,ISBN,BOOKNAME,PUBLISHNAM,AUTHERNAME,PUBDATE,\
		分类 FROM sdsdeb WHERE 分类 = '%s'",strItemText);
	}
	else if (strItemText == _T("时代圣典图书类别"))
	{
		SQLCommand.Format("SELECT BOOKID,ISBN,BOOKNAME,PUBLISHNAM,AUTHERNAME,PUBDATE,\
			分类 FROM sdsdeb;");
	}
	else
	{
		SQLCommand.Format("SELECT BOOKID,ISBN,BOOKNAME,PUBLISHNAM,AUTHERNAME,PUBDATE,\
		分类 FROM sdsdeb WHERE PRODNAME = '%s'",strItemText);
	}

	m_pRecordSet = mydb.GetRecordSet((_bstr_t)SQLCommand);
	if (m_pRecordSet->State != adStateOpen)
	{
		m_pRunDlg->ShowWindow(SW_HIDE);
		AfxMessageBox("没能打开表sdsdeb请确认表是否存在!");
		return;
	}
	try
	{
		m_pRunDlg->SetRunMessage("正在选书,请稍后......");
		m_pRunDlg->Running();
		while (m_pRecordSet->adoEOF == VARIANT_FALSE&&(m_pRunDlg->GetCycleStatus()==FALSE))
		{
			while(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
			{
				//解解释窗口消息
				::TranslateMessage(&message);
				//分发窗口消息
				::DispatchMessage(&message);
			}		
			var = m_pRecordSet->GetCollect(long(0));
			if (var.vt != VT_NULL)
			{
				strField = (LPCSTR)_bstr_t(var);
			}
			pBookList->m_CtrBookList.InsertItem(k,strField);
			//设置为选中状态
			pBookList->m_CtrBookList.SetCheck(k);
			for (int i=1;i<7;i++)
			{
				var = m_pRecordSet->GetCollect((long)i);
				if (var.vt != VT_NULL)
				{
					strField = (LPCSTR)_bstr_t(var);
				}
				pBookList->m_CtrBookList.SetItemText(k,i,strField);
				//设置为选中状态
				pBookList->m_CtrBookList.SetCheck(k);
			}
			m_pRecordSet->MoveNext();
		}
		m_pRecordSet->Close();
		mydb.ExitConnect();
	}
	catch (_com_error e)
	{
		mydb.LogWrite((LPCSTR)e.Description());
	}
	m_pRunDlg->StopRunning();
	m_pRunDlg->SetCycleStatus(TRUE);
	m_pRunDlg->ShowWindow(SW_HIDE);
}
//判断选择的是哪第几类书
BOOL CTabPageView::IsFirstClass(CString strItemText)
{
	for (int i=0;i<22;i++)
	{
		if (SDClass[i].Title == strItemText)
		{
			return TRUE;
		}
	}
	return FALSE;

}

void CTabPageView::OnButtonSelect() 
{
	// TODO: Add your control notification handler code here
	
}

void CTabPageView::InitListResult()
{
	m_CtrListResult.SetExtendedStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_MULTIWORKAREAS
		|LVS_EX_GRIDLINES);
	for (int i=0;i<7;i++)
	{
		m_CtrListResult.InsertColumn(i,ListColumn[i],LVCFMT_CENTER,80,i);
	}
	//m_CtrListResult.EnableWindow(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -