📄 rwaccessdlg.cpp
字号:
CPen pen(PS_SOLID,2,RGB(50,100,255));
CPen open(PS_SOLID,1,RGB(50,100,255));
CPen oopen(PS_SOLID,1,RGB(0,30,150));
CPen *pOldPen = pDC->SelectObject(&oopen);
pDC->PolyBezier(oopoints1,4);
pDC->PolyBezier(oopoints2,4);
pDC->SelectObject(&open);
pDC->PolyBezier(opoints1,4);
pDC->PolyBezier(opoints2,4);
pDC->SelectObject(&pen);
pDC->PolyBezier(points1,4);
pDC->PolyBezier(points2,4);
pDC->SelectObject(&wpen);
pDC->PolyBezier(points1,4);
pDC->PolyBezier(points2,4);
pDC->SelectObject(pOldPen);
oon1 = on1;
oon2 = on2;
on1 = n1;
on2 = n2;
}
/////////////////////////////////////////////////////////////////////////////
// CRWAccessDlg dialog
CRWAccessDlg::CRWAccessDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRWAccessDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRWAccessDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CRWAccessDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRWAccessDlg)
DDX_Control(pDX, IDC_LISTACCESS, m_AccessList);
DDX_Control(pDX, IDOK, m_OK);
DDX_Control(pDX, IDC_WRITEACCESS, m_WriteAccess);
DDX_Control(pDX, IDC_READACCESS, m_ReadAccess);
DDX_Control(pDX, IDC_ABOUT, m_About);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRWAccessDlg, CDialog)
//{{AFX_MSG_MAP(CRWAccessDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_WRITEACCESS, OnWriteAccess)
ON_BN_CLICKED(IDC_READACCESS, OnReadAccess)
ON_BN_CLICKED(IDC_ABOUT, OnAbout)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRWAccessDlg message handlers
//////////////////////////////////////////////////////////////////////////////
//名称:OnInitDialog
//功能:初始化对话框
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.26
/////////////////////////////////////////////////////////////////////////////
BOOL CRWAccessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
return TRUE; // return TRUE unless you set the focus to a control
}
void CRWAccessDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CRWAccessDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CRWAccessDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//////////////////////////////////////////////////////////////////////////////
//名称:OnWriteAccess
//功能:创建并写入数据到Access文件中
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.26
/////////////////////////////////////////////////////////////////////////////
void CRWAccessDlg::OnWriteAccess()
{
//获取主程序所在路径,存在sPath中
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
//默认创建数据名:Demo.mdb,内部表名:DemoTable,表内有二个字段:姓名、年龄
CString lpszFile = sPath + "\\Demo.mdb";
CFileFind fFind;
BOOL bSuccess;
bSuccess=fFind.FindFile(lpszFile);
fFind.Close ();
//是否已有创建好的Demo.mdb文件,没有则创建它
if(!bSuccess)
{
db.Create(lpszFile);
CString SqlCmd = "CREATE TABLE DemoTable(Name VARCHAR(20),Age VARCHAR(3));";
db.Execute(SqlCmd);
//打开已创建的数据表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,
"SELECT * FROM DemoTable", 0);
//加入第一个记录,用SQL语句
db.Execute("INSERT INTO DemoTable (Name,Age) VALUES ('徐景周',26)");
//加入第二个记录,用DAO涵数
RecSet.AddNew();
RecSet.SetFieldValue("Name","徐志慧");
RecSet.SetFieldValue("Age","21");
RecSet.Update();
//加入第三个记录,用DAO涵数
RecSet.AddNew();
RecSet.SetFieldValue("Name","郭徽");
RecSet.SetFieldValue("Age","27");
RecSet.Update();
//关闭记录集及库
RecSet.Close();
db.Close();
AfxMessageBox("Access文件写入成功!");
}
else
AfxMessageBox("Demo.mdb数据库已经创建!");
}
//////////////////////////////////////////////////////////////////////////////
//名称:OnReadAccess
//功能:从Access文件中读取相应数据并显示出来
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.26
/////////////////////////////////////////////////////////////////////////////
void CRWAccessDlg::OnReadAccess()
{
COleVariant var; // 字段类型
var.ChangeType(VT_BSTR, NULL);
CString strName,strAge,strFile;
//清空列表框
m_AccessList.ResetContent();
//获取主程序所在路径,存在sPath中
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
strFile = sPath + "\\demo.mdb";
db.Open(strFile); // 打开已创建的demo数据库及DamoTable表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable",NULL);
while(!RecSet.IsEOF()) // 有没有到表结尾
{
RecSet.GetFieldValue("Name",var);
strName = (LPCSTR)var.pbstrVal;
RecSet.GetFieldValue("Age",var);
strAge = (LPCSTR)var.pbstrVal;
m_AccessList.AddString( strName + " --> "+strAge );
RecSet.MoveNext();
}
//关闭记录集及库
RecSet.Close();
db.Close();
}
//////////////////////////////////////////////////////////////////////////////
//名称:OnAbout
//功能:弹出"关于"对话框
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.26
/////////////////////////////////////////////////////////////////////////////
void CRWAccessDlg::OnAbout()
{
CAboutDlg AboutDlg;
AboutDlg.DoModal();
}
//////////////////////////////////////////////////////////////////////////////
//名称:OnOK
//功能:退出程序时处理
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.26
/////////////////////////////////////////////////////////////////////////////
void CRWAccessDlg::OnOK()
{
CWindowAnima wa(this);
//将窗体分为6块动画窗体效果
wa.Scatter6(90,10);
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -