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

📄 switchdlg.cpp

📁 数据库查询程序,实时检索,界面模仿金山词霸
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SwitchDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "Switch.h"
#include "SwitchDlg.h"

extern CString mof_Detail;
extern CString mof_Name;
extern int Ifmodif;

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)



END_MESSAGE_MAP()


// CSwitchDlg 对话框




CSwitchDlg::CSwitchDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSwitchDlg::IDD, pParent)
	
	, m_Input(_T(""))
	, m_Detailed(_T(""))
{
	Add_New=new CAddNew(this);
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CSwitchDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);

	DDX_Control(pDX, IDC_LISTACCESS, m_AccessList);
	DDX_Text(pDX, IDC_INPUT, m_Input);
	DDX_Text(pDX, IDC_DETAIL, m_Detailed);
	DDX_Control(pDX, IDC_SEARCH, m_SearchBt);
	DDX_Control(pDX, IDC_SETTING, m_Setting);
	DDX_Control(pDX, IDC_SAVEALL, m_SaveAll);

	DDX_Control(pDX, IDC_EX1, m_Ex1);
	DDX_Control(pDX, IDC_EX2, m_Ex2);
}

BEGIN_MESSAGE_MAP(CSwitchDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_SEARCH, &CSwitchDlg::OnBnClickedSearch)
	ON_EN_CHANGE(IDC_INPUT, &CSwitchDlg::OnEnChangeInput)
	ON_LBN_SELCHANGE(IDC_LISTACCESS, &CSwitchDlg::OnLbnSelchangeListaccess)
	ON_LBN_DBLCLK(IDC_LISTACCESS, &CSwitchDlg::OnLbnDblclkListaccess)
//	ON_WM_RBUTTONUP(IDC_LISTACCESS, &CSwitchDlg::OnListRButtonUp)
	ON_MESSAGE(WM_ADDNEW,OnAddNewItem)
	ON_WM_ENABLE()
	ON_BN_CLICKED(IDC_SAVEALL, &CSwitchDlg::OnBnClickedSaveall)
	ON_WM_DESTROY()
	ON_WM_RBUTTONUP()
	ON_COMMAND(ID_ADDNEW, &CSwitchDlg::OnAddnew)
END_MESSAGE_MAP()


// CSwitchDlg 消息处理程序

BOOL CSwitchDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标


//	ModifyStyle( WS_CAPTION, WS_MINIMIZEBOX, SWP_DRAWFRAME );//设置图标

	m_bmpBackground.LoadBitmap(IDB_MAINTITLE);	/// 加载背景
	m_bmpAdd.LoadBitmap(IDB_ADDBMP);	/// 加载背景
	m_bmpState.LoadBitmap(IDB_STATE);	
	m_bmpLeftTitle.LoadBitmap(IDB_LEFTTITLE);
	m_bmpRightTitle.LoadBitmap(IDB_RIGHTTITLE);
	m_bmpRightBar.LoadBitmap(IDB_RIGHTBAR);

	m_Sta_Input.SubclassDlgItem(IDC_STA_INPUT,this);
	m_Sta_Input.SetCaption(_T("输入:"));
	m_Sta_Input.SetBackColor(RGB(222,223,222));

		m_Sta_Memu.SubclassDlgItem(IDC_STA_MEMU,this);
	m_Sta_Memu.SetCaption(_T("元器件清单"));
	m_Sta_Memu.SetBackColor(RGB(222,223,222));

    m_SearchBt.LoadBitmaps(IDB_SEARCHBT,IDB_SEARCHBT2);


	m_Setting.SetBitmaps(IDB_SETTING, RGB(0, 255, 0));
	m_Setting.DrawTransparent(TRUE);
	m_Setting.SetTooltipText(_T("更改设置"));
	m_Setting.SetMenu(IDR_RMOUSEMEMU, m_hWnd);

	m_SaveAll.SetBitmaps(IDB_SAVEALL, RGB(0, 255, 0));
	m_SaveAll.DrawTransparent(TRUE);
	m_SaveAll.SetTooltipText(_T("更改设置"));

	m_Ex1.SetBitmaps(IDB_EX1, RGB(0, 255, 0));
	m_Ex1.DrawTransparent(TRUE);
	m_Ex1.SetTooltipText(_T("更改设置"));


	m_Ex2.SetBitmaps(IDB_EX2, RGB(0, 255, 0));
	m_Ex2.DrawTransparent(TRUE);
	m_Ex2.SetTooltipText(_T("更改设置"));

	//	m_Setting.SetIcon(IDB_SEARCHBT);
	
			// 使用ADO创建数据库记录集
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 因为它有时会经常出现一些想不到的错误。shiweilei
	try
	{
		m_pRecordset->Open("SELECT * FROM component",                // 查询test表中所有字段
							theApp.m_pConnection.GetInterfacePtr(),	 // 获取库接库的IDispatch指针
							adOpenDynamic,
							adLockOptimistic,
							adCmdText);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	OnReadAccess();

//	m_pRecordset->MoveFirst();    //移到首条记录


//	while(!m_pRecordset->adoEOF) 
//	{
//		  m_pRecordset->Delete(adAffectCurrent);    //删除当前记录
//		  m_pRecordset->MoveNext();    //移到下一条记录
//	}
	map <CString, CString> :: iterator Sea_Iter=Sea.begin();
	m_Detailed=Sea_Iter->second;
	UpdateData(FALSE);

	for(;Sea_Iter!=Sea.end();Sea_Iter++){  
		m_AccessList.AddString(Sea_Iter->first);
//		OnWriteAccess(Sea_Iter->first,Sea_Iter->second,_T("0"));
	}
	m_AccessList.SetCurSel(0);
	m_AccessList.SetTopIndex(0);
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CSwitchDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CSwitchDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CPaintDC dc(this);
		CRect rect;
		GetClientRect(&rect);
		CDC dcMem; 
		dcMem.CreateCompatibleDC(&dc); 
		BITMAP bitMap;
		m_bmpBackground.GetBitmap(&bitMap);
		CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpBackground);
	
		dc.StretchBlt(0,0,rect.Width(),40,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

		dc.StretchBlt(rect.Width()-400,0,400,40,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

	
//		dc.TextOutW(330,10,_T("查 询"));

		m_bmpLeftTitle.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpLeftTitle);
	
		dc.StretchBlt(0,40,210,24,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


			




		m_bmpRightBar.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpRightBar);
	
		dc.StretchBlt(210,40,8,420,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


		m_bmpState.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpState);
	

		dc.StretchBlt(0,rect.Height()-26,700,26,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
		dc.StretchBlt(rect.Width()-100,rect.Height()-26,100,26,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


		m_bmpRightTitle.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpRightTitle);

//		dc.StretchBlt(210,40,rect.Width(),25,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
		dc.StretchBlt(215,40,100,25,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
		dc.StretchBlt(rect.Width()-99,40,100,25,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

		m_bmpLeftTitle.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpLeftTitle);
	
		dc.StretchBlt(225,40,411,24,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

		m_bmpRightBar.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpRightBar);
	
		dc.StretchBlt(rect.Width()-3,40,3,450,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
	dc.StretchBlt(0,63,4,450,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
		m_bmpState.GetBitmap(&bitMap);
		pbmpOld=dcMem.SelectObject(&m_bmpState);
	

		dc.StretchBlt(0,rect.Height()-26,700,26,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
		dc.StretchBlt(rect.Width()-100,rect.Height()-26,100,26,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
	
//		m_bmpLeftTitle.GetBitmap(&bitMap);
//		pbmpOld=dcMem.SelectObject(&m_bmpLeftTitle);

//		dc.StretchBlt(250,40,100,24,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
//		dc.StretchBlt(350,40,100,24,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
//		dc.StretchBlt(450,40,100,24,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR CSwitchDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


void CSwitchDlg::OnBnClickedSearch()
{
	// TODO: 在此添加控件通知处理程序代码

//	m_AccessList.SetTopIndex(5) ;

}
//////////////////////////////////////////////////////////////////////////////
//名称:OnWriteAccess
//功能:用ADO来写入插入的字段值
//作者:施炜雷(shiweilei@sina.com)
//组织:刀锋工作室()
//日期:2006.8.20
/////////////////////////////////////////////////////////////////////////////
void CSwitchDlg::OnWriteAccess(CString	str_Name,CString str_Detail,CString str_Other) 
{
	UpdateData();
//	CString s_time=m_StyleExampleA.FormattedTime();



⌨️ 快捷键说明

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