#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
没有合适的资源?快使用搜索试试~ 我知道了~
成绩管理系统-C语言-Windows图形界面
共33个文件
ico:20个
c:9个
h:2个
需积分: 45 45 下载量 3 浏览量
2014-11-15
16:32:27
上传
评论 13
收藏 513KB ZIP 举报
温馨提示
华中科技大学软件课程设计作业-小型成绩管理系统,纯C语言实现,通过调用WINDOWS API实现的图形界面,代码格式还算规范,注释较多,编译无错误,暂未发现功能不正常的BUG。包含所有源文件、资源文件和图标等资源,但是不包含工程文件,直接新建WIN32工程将所有文件加入工程即可。
资源推荐
资源详情
资源评论
收起资源包目录
成绩管理系统.zip (33个子文件)
成绩管理系统
ScoreAdmin.h 9KB
Public.c 774B
resource.h 5KB
Interface.c 3KB
SubManage.c 6KB
Modify.ico 17KB
WinMain.c 42KB
SubjectPush.ico 17KB
Help.ico 17KB
Query.ico 17KB
DeletePush.ico 17KB
Failed.ico 13KB
StuQuery.c 2KB
QueryPush.ico 17KB
SortPush.ico 17KB
Icon_16.ico 894B
HelpPush.ico 17KB
Delete.ico 17KB
ModifyPush.ico 17KB
Add.ico 17KB
AddPush.ico 17KB
StuManage.c 9KB
BG.bmp 1MB
ScoreSortAndCount.c 10KB
resource.rc 21KB
ClassManage.c 9KB
Subject.ico 17KB
Sort.ico 17KB
FailedPush.ico 13KB
ClassPush.ico 17KB
FileOperation.c 9KB
Class.ico 17KB
Icon_32.ico 3KB
共 33 条
- 1
资源评论
djkgh
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功