#include"ScoreAdmin.h"
/*****************************/
/* 窗口过程和对话框过程原型 */
/*****************************/
LRESULT CALLBACK FrameWndProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK BrowseWndProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ClassBrowseDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ClassAddDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK ClassModifyDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK SubBrowseDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK SubAddDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK SubModifyDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK StuAddDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK StuModifyDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK GradeAddDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK GradeModifyDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK StuQueryDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK FailedStuBrowseDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK RankBrowseDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK HelpDlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM);
/*****************************/
/* 全局变量声明 */
/*****************************/
CWI cwi; //创建窗口所需信息
ClassInfo ci[NUM_CLASS]; //班级数组
SubInfo si[NUM_SUBJECT]; //科目数组
GradeInfo gi[NUM_CLASS][NUM_STUPERCLASS]; //成绩数组
int SavedNum[2]; //当前录入的班级、科目数
int SavedStu[NUM_CLASS]; //每个班当前录入的学生个数
/*****************************/
/* 入口函数 */
/*****************************/
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PTSTR szCmdline, int iCmdShow)
{
MSG msg;
WNDCLASSEX wcex;
HACCEL hAccel;
cwi.szFrameWndName = _T("SCOREADMIN");
cwi.szBrowseWndName = _T("BROWSEWND");
cwi.hInstance = hInstance;
wcex.cbSize = sizeof(wcex);
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wcex.lpfnWndProc = FrameWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, _T("Icon_32"));
wcex.hIconSm = LoadIcon(hInstance, _T("Icon_16"));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.lpszMenuName = cwi.szFrameWndName;
wcex.lpszClassName = cwi.szFrameWndName;
if(!RegisterClassEx(&wcex))
{
MessageBox(NULL, _T("注册窗口类失败!"), _T("注册窗口类"), MB_ICONEXCLAMATION | MB_OK);
return FALSE;
}
cwi.hFrameWnd = CreateWindowEx(0, cwi.szFrameWndName, _T("成绩管理系统"),
WS_CAPTION | WS_SYSMENU | WS_BORDER | WS_MINIMIZEBOX,
50, 120, 760, 560, NULL, NULL, hInstance, NULL);
if(NULL == cwi.hFrameWnd)
{
MessageBox(NULL, _T("创建窗口失败!"), _T("创建窗口"), MB_ICONEXCLAMATION | MB_OK);
return FALSE;
}
ShowWindow(cwi.hFrameWnd, iCmdShow);
UpdateWindow(cwi.hFrameWnd);
hAccel = LoadAccelerators(hInstance, cwi.szFrameWndName);
while(GetMessage(&msg, NULL, 0, 0))
{
if(0 == cwi.hBrowseWndModeless || !IsDialogMessage(cwi.hBrowseWndModeless, &msg))
{
if(!TranslateAccelerator(cwi.hFrameWnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
return msg.wParam;
}
/*****************************/
/* 框架窗口 */
/*功能:负责菜单和键盘加速键 */
/*****************************/
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static DFWI dfwi; //绘制FrameWnd所需的信息
static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];
static TCHAR szDataName[MAX_PATH], szDataTitleName[MAX_PATH];
int i, cx, cy;
int iSelect; //从浏览窗口列表框获取的选择项序号
int index[2] = {0}; //专业和班级组合框选中项的序号
SMI smi;
BWI bwi;
BITMAP BG;
HDC hDC;
HDC hDCMem;
PAINTSTRUCT ps;
RECT rect;
POINT pt;
TEXTMETRIC tm;
LPDRAWITEMSTRUCT pdis;
switch(uMsg)
{
/**************************
* 框架窗口的绘制 *
**************************/
case WM_CREATE:
//全局变量的初始化
cwi.bNeedSave = FALSE;
PopFileInitialize(cwi.hFrameWnd);
SetListHeading();
//图标菜单背景条
dfwi.hGrayBar = CreateWindowEx(0, _T("static"), NULL, WS_CHILD | WS_VISIBLE | SS_CENTER,
0, 0, 0, 0, hWnd, (HMENU)ID_MENUBAR, cwi.hInstance, 0);
//分割线
dfwi.hBorder[0] = CreateWindowEx(0, _T("static"), NULL, WS_CHILD | WS_VISIBLE | SS_ETCHEDVERT,
2 * WIDTH_TOOL + 4, 1, 1, WIDTH_TOOL,
hWnd, (HMENU)ID_MENUBAR, cwi.hInstance, 0);
dfwi.hBorder[1] = CreateWindowEx(0, _T("static"), NULL, WS_CHILD | WS_VISIBLE | SS_ETCHEDVERT,
6 * WIDTH_TOOL + 12, 1, 1, WIDTH_TOOL,
hWnd, (HMENU)ID_MENUBAR, cwi.hInstance, 0);
dfwi.hBorder[2] = CreateWindowEx(0, _T("static"), NULL, WS_CHILD | WS_VISIBLE | SS_ETCHEDVERT,
8 * WIDTH_TOOL + 20, 1, 1, WIDTH_TOOL,
hWnd, (HMENU)ID_MENUBAR, cwi.hInstance, 0);
//载入按钮图标
for(i = 0; i < NUM_TOOL; i ++)
{
dfwi.hToolUp[i] = LoadImage(cwi.hInstance, MAKEINTRESOURCE(IDI_CLASS + i), IMAGE_ICON,
WIDTH_TOOL, WIDTH_TOOL, LR_SHARED);
}
for(i = 0; i < NUM_TOOL; i ++)
{
dfwi.hToolDown[i] = LoadImage(cwi.hInstance, MAKEINTRESOURCE(IDI_CLASS_P + i), IMAGE_ICON,
WIDTH_TOOL, WIDTH_TOOL, LR_SHARED);
}
//创建自绘按钮
for(i = 0; i < 2; i ++)
{
dfwi.hTool[i] = CreateWindowEx(0, _T("button"), NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
i * WIDTH_TOOL, 0, WIDTH_TOOL, WIDTH_TOOL,
hWnd, (HMENU)i, cwi.hInstance, 0);
}
for(i = 2; i < 6; i ++)
{
dfwi.hTool[i] = CreateWindowEx(0, _T("button"), NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
2 * WIDTH_TOOL + 8 + (i - 2) * WIDTH_TOOL, 0, WIDTH_TOOL, WIDTH_TOOL,
hWnd, (HMENU)i, cwi.hInstance, 0);
}
for(i = 6; i < 8; i ++)
{
dfwi.hTool[i] = CreateWindowEx(0, _T("button"), NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
6 * WIDTH_TOOL + 16 + (i - 6) * WIDTH_TOOL, 0, WIDTH_TOOL, WIDTH_TOOL,
hWnd, (HMENU)i, cwi.hInstance, 0);
}
dfwi.hTool[8] = CreateWindowEx(0, _T("button"), NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
8 * WIDTH_TOOL + 24, 0, WIDTH_TOOL, WIDTH_TOOL,
hWnd, (HMENU)i, cwi.hInstance, 0);
//载入浮动菜单
dfwi.hPopMenu = LoadMenu(cwi.hInstance, _T("POPMENU"));
dfwi.hPopMenu = GetSubMenu(dfwi.hPopMenu, 0);
//载入背景图片
dfwi.hBG = LoadImage(cwi.hInstance, _T("BACKGROUND"), IMAGE_BITMAP,
1366, 768, LR_SHARED | LR_CREATEDIBSECTION);
return 0;
case WM_SIZE:
//客户区大小
cwi.cxClient = LOWORD(lParam);
cwi.cyClient = HIWORD(lParam);
//改变图标菜单背景条的位置、大小
MoveWindow(dfwi.hGrayBar, 0, 0, cwi.cxClient, WIDTH_TOOL + 2, TRUE);
return 0;
case WM_DRAWITEM:
//自绘按钮
pdis = (LPDRAWITEMSTRUCT)lParam;
cx = pdis->rcItem.right - pdis->rcItem.left;
cy = pdis->rcItem.bottom - pdis->rcItem.top;
switch(pdis->CtlID)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
i = pdis->CtlID;
//未按下状态
DrawIconEx(pdis->hDC, pdis->rcItem.left, pdis->rcItem.top, dfwi.hToolUp[i],
WIDTH_TOOL, WIDTH_TOOL, 0, (HBRUSH)(COLOR_BTNFACE + 1), DI_IMAGE);
//按下状态
if(pdis->itemState & ODS_SELECTED)
{
DrawIconEx(pdis->hDC, pdis->rcItem.left, pdis->rcItem.top, dfwi.hToolDown[i],
WIDTH_TOOL, WIDTH_TOOL, 0, (HBRUSH)(COLOR_BTNFACE + 1), DI_IMAGE);
}
return 0;
default:
return 0;
}
//更改图标菜单背景条的颜色
case WM_CTLCOLORSTATIC:
i = GetWindowLong((HWND)lParam, GWL_ID);
if(ID_MENUBAR == i)
{
SetBkColor((HDC

djkgh
- 粉丝: 1
- 资源: 2