📄 poemdlg.cpp
字号:
// POEMDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "POEM.h"
#include "POEMDlg.h"
#include ".\poemdlg.h"
#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()
// CPOEMDlg 对话框
CPOEMDlg::CPOEMDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPOEMDlg::IDD, pParent)
, m_ftxt(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CPOEMDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_RICHEDIT26, m_gs);
DDX_Control(pDX, IDC_RICHEDIT27, m_zs);
DDX_Control(pDX, IDC_RICHEDIT25, m_xz);
DDX_Control(pDX, IDC_ND, m_nd);
DDX_Control(pDX, IDC_ZZ, m_zz);
DDX_Control(pDX, IDC_ZP, m_zp);
DDX_Control(pDX, IDC_BUTTON3, m_close);
DDX_Control(pDX, IDC_BUTTON7, m_min);
DDX_Control(pDX, IDC_BUTTON6, m_start);
DDX_Control(pDX, IDC_BUTTON4, m_next);
DDX_Control(pDX, IDC_BUTTON5, m_up);
DDX_Control(pDX, IDC_BUTTON8, m_end);
DDX_Control(pDX, IDC_BUTTON1, m_set);
DDX_Control(pDX, IDC_ST1, m_gr1);
DDX_Control(pDX, IDC_STA, m_grg);
DDX_Control(pDX, IDC_STAT1, m_grz);
DDX_Control(pDX, IDC_RICHEDIT21, m_zx);
DDX_Text(pDX, IDC_EDIT2, m_ftxt);
DDX_Control(pDX, IDC_ZP2, m_fre);
DDX_Control(pDX, IDC_EDIT2, m_ftxtctrl);
}
BEGIN_MESSAGE_MAP(CPOEMDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_COMMAND(ID__BK, SetBK)
ON_COMMAND(ID__FONT, SetFont)
ON_CBN_SELCHANGE(IDC_ND, OnCbnSelchangeNd)
ON_CBN_SELCHANGE(IDC_ZZ, OnCbnSelchangeZz)
ON_CBN_SELCHANGE(IDC_ZP, OnCbnSelchangeZp)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnBnClickedButton6)
ON_BN_CLICKED(IDC_BUTTON8, OnBnClickedButton8)
ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON7, OnBnClickedButton7)
ON_WM_ERASEBKGND()
ON_WM_MOUSEMOVE()
ON_NOTIFY(EN_SELCHANGE, IDC_RICHEDIT25, OnEnSelchangeRichedit25)
ON_NOTIFY(EN_SELCHANGE, IDC_RICHEDIT26, OnEnSelchangeRichedit26)
ON_NOTIFY(EN_SELCHANGE, IDC_RICHEDIT27, OnEnSelchangeRichedit27)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
ON_CBN_SELCHANGE(IDC_ZP2, OnCbnSelchangeZp2)
END_MESSAGE_MAP()
// CPOEMDlg 消息处理程序
BOOL CPOEMDlg::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);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
cBox = new CComboBox;
cBox->Create(CBS_DROPDOWNLIST|CBS_AUTOHSCROLL|CBS_SIMPLE , CRect(0,0,0,0), this, 0);
cBox->ShowWindow(0);
SpInitTokenComboBox( cBox->m_hWnd, SPCAT_VOICES);
pVoice.CoCreateInstance(CLSID_SpVoice);
m_gss = -1;
m_zss = -1;
m_xzs = -1;
m_fstore = "";
m_gs.SendMessage(EM_SETEVENTMASK, 0, ENM_SELCHANGE);
m_zs.SendMessage(EM_SETEVENTMASK, 0, ENM_SELCHANGE);
m_xz.SendMessage(EM_SETEVENTMASK, 0, ENM_SELCHANGE);
SetWindowText("中华诗词-——郭肇禄开发");
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
CString str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=POEM.mdb;Persist Security Info=False;Jet OLEDB:Database Password=990137;";
CString sql;
m_flg = "0";
m_czz = "";
m_czp = "";
m_con = new CAdoConnection;
m_con->Connect(str);
m_Poem = new CAdoRecordSet(m_con);
sql = "select * from poemN order by Po_ID";
m_Poem->Open(sql);
InitNd();
SetZZ();
SetZP();
SetPoem();
CFont ft;
ft.CreateFont(16,16,0,0,300,0,0,0,0,0,0,0,0,"宋体");
m_xz.SetFont(&ft);
m_gs.SetFont(&ft);
m_zs.SetFont(&ft);
ft.CreateFont(22,22,0,0,300,0,0,0,0,0,0,0,0,"宋体");
m_zx.SetFont(&ft);
m_xz.SetBackgroundColor(0, 0xc0ffc0);
m_gs.SetBackgroundColor(0, 0xc0ffc0);
m_zs.SetBackgroundColor(0, 0xc0ffc0);
m_close.SetBitMap(IDB_QUIT);
m_min.SetBitMap(IDB_MIN);
m_start.SetBitMap(IDB_START);
m_start.GetWindowText(str);
m_start.SetTip(str.GetBuffer());
m_end.SetBitMap(IDB_END);
m_end.GetWindowText(str);
m_end.SetTip(str.GetBuffer());
m_up.GetWindowText(str);
m_up.SetTip(str.GetBuffer());
m_up.SetBitMap(IDB_UP);
m_next.SetBitMap(IDB_NEXT);
m_next.GetWindowText(str);
m_next.SetTip(str.GetBuffer());
m_set.SetBitMap(IDB_SET);
m_set.GetWindowText(str);
m_set.SetTip(str.GetBuffer());
m_gr1.SetBitmapID(IDB_BK);
m_gr1.SetTextColor(0x0000ff);
m_grg.SetBitmapID(IDB_BK);
m_grg.SetTextColor(0x0000ff);
m_grz.SetBitmapID(IDB_BK);
m_grz.SetTextColor(0x0000ff);
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
void CPOEMDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CPOEMDlg::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
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CPOEMDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CPOEMDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFont ft;
LOGFONT hft;
CFontDialog ftdlg;
int i = ftdlg.DoModal();
if (i == IDCANCEL)
{
return;
}
ftdlg.GetCurrentFont(&hft);
ft.CreateFontIndirect(&hft);
m_gs.SetFont(&ft);
m_zs.SetFont(&ft);
m_xz.SetFont(&ft);
m_gr1.SetFont(&ft);
}
void CPOEMDlg::SetBK()
{
// TODO: 在此添加命令处理程序代码
CColorDialog coldlg;
COLORREF col;
int i = coldlg.DoModal();
if (i == IDCANCEL)
{
return;
}
col = coldlg.GetColor();
m_xz.SetBackgroundColor(0, col);
m_gs.SetBackgroundColor(0, col);
m_zs.SetBackgroundColor(0, col);
}
void CPOEMDlg::SetFont()
{
// TODO: 在此添加命令处理程序代码
CFont ft;
LOGFONT hft;
CFontDialog ftdlg;
ftdlg.DoModal();
ftdlg.GetCurrentFont(&hft);
ft.CreateFontIndirect(&hft);
m_gs.SetFont(&ft);
m_zs.SetFont(&ft);
m_xz.SetFont(&ft);
}
void CPOEMDlg::OnCbnSelchangeNd()
{
// TODO: 在此添加控件通知处理程序代码
m_czz = "";
SetZZ();
OnCbnSelchangeZz();
}
void CPOEMDlg::InitNd(void)
{
CString sql;
CString str;
CAdoRecordSet *record;
record = new CAdoRecordSet(m_con);
sql = "select distinct date, Au_id from author order by Au_ID";
record->Open(sql);
str = "";
CString tem = "";
record->MoveFirst();
m_nd.ResetContent();
while (!record->IsBOF() && !record->IsEOF())
{
record->GetValueString(str, 0);
if (str != "" && str != "NULL" && str != tem)
{
tem = str;
m_nd.AddString (str);
}
record->MoveNext();
}
m_nd.SetCurSel(0);
delete record;
OnCbnSelchangeNd();
}
void CPOEMDlg::SetZZ()
{
CString str;
CString sql;
CString tem;
CAdoRecordSet *record;
m_nd.GetLBText(m_nd.GetCurSel(), str);
sql = "select * from author where date ='" + str;
sql = sql + "'" ;
sql = sql + " order by Au_ID";
record = new CAdoRecordSet(m_con);
record->Open(sql);
record->MoveFirst();
m_zz.ResetContent();
str = "";
while (!record->IsBOF() && !record->IsEOF())
{
record->GetValueString(str, 1);
if (str != "" && str != "NULL")
{
m_zz.AddString(str);
}
record->MoveNext();
}
//设置当前作者***********
if (m_czz == "")
{
m_zz.SetCurSel(0);
}
else
{
int i = m_zz.FindStringExact(0, m_czz);
if (i != -1)
{
m_zz.SetCurSel(i);
}
}
delete record;
}
void CPOEMDlg::OnCbnSelchangeZz()
{
// TODO: 在此添加控件通知处理程序代码
m_czp = "";
SetZP();
OnCbnSelchangeZp();
}
void CPOEMDlg::SetZP()
{
CString str;
CString sql;
CString tem;
CAdoRecordSet *record;
m_zz.GetLBText(m_zz.GetCurSel(), str);
sql = "select * from Author where Name='" + str;
sql = sql + "'" ;
sql = sql + " order by Au_ID";
record = new CAdoRecordSet(m_con);
record->Open(sql);
if (record->GetRecordCount() >0 )
{
record->GetValueString(str, 0);
str.Trim();
}
delete record;
sql = "select * from poemN where Po_ID like '" + str;
sql = sql + "%' order by Po_ID";
record = new CAdoRecordSet(m_con);
record->Open(sql);
record->MoveFirst();
m_zp.ResetContent();
str = "";
while (!record->IsBOF() && !record->IsEOF())
{
record->GetValueString(str, 1);
if (str != "" && str != "NULL")
{
m_zp.AddString(str);
}
record->MoveNext();
}
delete record;
// 设置当前作品*****************
if (m_czp == "")
{
m_zp.SetCurSel(0);
}
else
{
int i = m_zp.FindStringExact(0, m_czp);
if (i != -1)
{
m_zp.SetCurSel(i);
}
}
}
void CPOEMDlg::OnCbnSelchangeZp()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
m_flg = "Z";
m_zp.GetLBText(m_zp.GetCurSel(), str);
MoveToZP(str);
SetPoem();
}
void CPOEMDlg::SetPoem(void)
{
CString str;
CString sql;
CString tem;
CString nd;
FINDTEXTEX ft;
char c[255];
CAdoRecordSet record;
CAdoRecordSet *Author;
m_Poem->GetValueString(str, 2);//取得诗内容
if (str != "NULL")
{
m_gs.SetWindowText(str);
SpeakCh(str);
if (m_flg == "F")//选取查找内容
{
m_flg = "A";
FindSelStr();
}
}
m_Poem->GetValueString(str, 3);//取得诗注释
if (str != "NULL")
{
m_zs.SetWindowText(str);
}
m_Poem->GetValueString(m_czp, 1);//取得诗标题
m_Poem->GetValueString(tem, 0);//取得诗编号
tem = tem.Mid(0, 5);//取得作者编号
sql = "select * from Author where Au_ID = '";
sql = sql + tem;
sql = sql + "'";
sql = sql + " order by Au_ID";
Author = new CAdoRecordSet(m_con);
Author->Open(sql);
Author->GetValueString(str, 3);
if (str != "NULL")
{
m_xz.SetWindowText(str);//设置作者小传
}
Author->GetValueString(m_czz, 1);//取得作者姓名
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -