📄 librarydlg.cpp
字号:
// libraryDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "libraryDlg.h"
#include "LogInDlg.h"
#include "BookManageDlg.h"
#include "UsersManageDlg.h"
#include "InitDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLibraryDlg dialog
CLibraryDlg::CLibraryDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLibraryDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLibraryDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CLibraryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLibraryDlg)
DDX_Control(pDX, IDC_WEB, m_Web);
DDX_Control(pDX, IDC_PARENT, m_Parent);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLibraryDlg, CDialog)
//{{AFX_MSG_MAP(CLibraryDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_MENUBOOK_MANAGE, OnMenubookManage)
ON_WM_TIMER()
ON_WM_ERASEBKGND()
ON_COMMAND(ID_MENUUSERS_MANAGE, OnMenuusersManage)
ON_COMMAND(ID_TOOLBOOKMANAGE, OnToolbookmanage)
ON_COMMAND(ID_TOOLUSERSMANAGE, OnToolusersmanage)
ON_COMMAND(ID_MENU_INIT, OnMenuInit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLibraryDlg message handlers
BOOL CLibraryDlg::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
// TODO: Add extra initialization here
//状态栏
m_StatusBar.Create(this);
//添加状态栏面板
UINT Indicates[4];
for (int i = 0; i<4;i++)
{
Indicates[i] = 50+i;
}
m_StatusBar.SetIndicators(Indicates,4);
CRect rect;
GetClientRect(rect);
UINT PaneWidth = rect.Width()/6;
//设置面板宽度
for(int n = 0;n<3;n++)
{
m_StatusBar.SetPaneInfo(n,50+n*10,SBPS_NORMAL,PaneWidth);
}
//设置状态栏面板文本
m_StatusBar.SetPaneInfo(3,111,SBPS_NORMAL,800);
m_StatusBar.SetPaneText(0,"你好");
m_StatusBar.SetPaneText(1,"欢迎您使用本系统");
m_StatusBar.SetPaneText(2," 欢迎您进入");
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
m_Parent.SetParent(&m_StatusBar);
//获取控件的显示区域
m_StatusBar.GetStatusBarCtrl().GetRect(3,Rect);
Rect.DeflateRect(1,1,1,1);
m_Parent.MoveWindow(Rect);
m_Parent.GetClientRect(Rect);
m_Web.GetClientRect(rect1);
m_Web.SetParent(&m_Parent);
m_Parent.GetClientRect(CurRect);
CurRect.DeflateRect(0,1,Rect.Width()-rect1.Width(),1);
m_Web.MoveWindow(CurRect);
SetTimer(1,200,NULL);
m_ToolBar.Create(this); //创建工具栏
m_ToolBar.LoadToolBar(IDR_TOOLBAR1);//加载工具栏
//得出控件条大小.
CRect rectNow;
GetClientRect(rect);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rectNow);
//放置控件条位置
CPoint ptOffset(rectNow.left-rect.left,rectNow.top-rect.top);
CRect rcChild;
CWnd* pwndChild=GetWindow(GW_CHILD);
while (pwndChild)
{
pwndChild->GetWindowRect(rcChild);
ScreenToClient(rcChild);
rcChild.OffsetRect(ptOffset);
pwndChild->MoveWindow(rcChild,FALSE);
pwndChild=pwndChild->GetNextWindow();
}
//调整对话框尺寸
CRect rcWindow;
GetWindowRect(rcWindow);
rcWindow.right+=rect.Width()-rectNow.Width();
rcWindow.bottom+=rect.Height()-rectNow.Height();
MoveWindow(rcWindow, FALSE);
//控件条定位
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
//对框居中
CenterWindow();
CLogInDlg log_dlg;
b_Login = 1;
log_dlg.b_Login = &b_Login;
log_dlg.DoModal();
if(b_Login)
{
CDialog::OnOK();
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CLibraryDlg::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 CLibraryDlg::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 CLibraryDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CLibraryDlg::OnMenubookManage()
{
// TODO: Add your command handler code here
CBookManageDlg dlg;
dlg.DoModal();
}
void CLibraryDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (CurRect.left>=Rect.right)
{
CurRect.left = Rect.left-rect1.Width();
CurRect.right =Rect.left;
}
else
{
CurRect.left+=4;
CurRect.right+=4;
}
//调整控件位置
m_Web.MoveWindow(CurRect);
CDialog::OnTimer(nIDEvent);
}
BOOL CLibraryDlg::OnEraseBkgnd(CDC* pDC)
{
CRect rc;
pDC->GetClipBox(&rc);
DrawGradient(pDC->GetSafeHdc(), rc, RGB(128,255,0), RGB(0,0,255), 1);
//pDC->TextOut(200,200,"Wait...");
// Sleep(3000);
return TRUE;
}
void CLibraryDlg::DrawGradient(HDC pDC,const RECT& rect,COLORREF begin, COLORREF end, const int &width)
{
RECT rcstep;
HBRUSH br;
int n,m;
float step=0.0;
int nred=0,ngreen=0,nblue=0;
float red=0.0,green=0.0,blue=0.0;
nred=(GetRValue(end)-GetRValue(begin));
ngreen=(GetGValue(end)-GetGValue(begin));
nblue=(GetBValue(end)-GetBValue(begin));
step=(float)abs(rect.top-rect.bottom)/(float)width;
red=nred/(float)step;
green=ngreen/(float)step;
blue=nblue/(float)step;
nred=GetRValue(begin);
ngreen=GetGValue(begin);
nblue=GetBValue(begin);
for(int start=0 ; start <= step ; start++)
{
//n=min((int)(rect.top+start*width), rect.bottom);
// m=min((int)(rect.top+(start+1)*width), rect.bottom);
m=start;
n=start+1;
::SetRect(&rcstep,rect.left,n,rect.right+1,m);
br=CreateSolidBrush(RGB(nred + red*start,
ngreen + green*start,nblue + blue*start));
HBRUSH oldbr=(HBRUSH)::SelectObject(pDC,br);
FillRect(pDC,&rcstep,br);
::SelectObject(pDC,oldbr);
DeleteObject(br);
}
}
void CLibraryDlg::OnMenuusersManage()
{
// TODO: Add your command handler code here
CUsersManageDlg dlg;
dlg.DoModal();
}
void CLibraryDlg::OnToolbookmanage()
{
// TODO: Add your command handler code here
CBookManageDlg dlg;
dlg.DoModal();
}
void CLibraryDlg::OnToolusersmanage()
{
// TODO: Add your command handler code here
CUsersManageDlg dlg;
dlg.DoModal();
}
void CLibraryDlg::OnMenuInit()
{
// TODO: Add your command handler code here
CInitDlg dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -