/***********************************************************
程序功能:电子书管理
EleBooksManager.c
transistor 于2009-1-17
************************************************************/
#include <windows.h>
#include <tchar.h>
#include <commctrl.h> //include 公共控件头文件
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <cderr.h> // include 公共对话框错误代码
#include <Shlwapi.h> //StrStrI函数需要
#include "resource.h"
#include "EleBooksManager.h"
#include "ListView.h"
#include "TreeView.h"
//全局变量
//LISTINFO 结构包含 "电子书管理者" 信息
LISTINFO g_Listing;
//用来存储搜索条上的"Edit" IDEB_BOOKNAME 的老的消息过程
WNDPROC SearchbarBNEditOldProc;
//工具条按钮
TBBUTTON tbButtons[] = {
{ 0, IDM_ADD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 1, IDM_MOV, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 2, IDM_CPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
{ 3, IDM_DEL, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
};
//用于存放书类和书信息的数组
BOOKINFO rgBooks[MAX_BOOKS];
BOOKSORTINFO rgBookSorts[MAX_BOOKSORTNUM];
TCHAR *lpBufPtr;
TCHAR szDataBasePath[MAX_PATH];
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
if (!InitApplication(hInstance))
return (FALSE);
if (!InitInstance(hInstance, nCmdShow))
return (FALSE);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
/****************************************************************************
函数: InitApplication(HANDLE)
目的: 初始化窗口数据和注册窗口类
****************************************************************************/
BOOL InitApplication(HANDLE hInstance)
{
WNDCLASS wcEleBooksManager;
wcEleBooksManager.style = 0;
wcEleBooksManager.lpfnWndProc = MainProc;
wcEleBooksManager.cbClsExtra = 0;
wcEleBooksManager.cbWndExtra = 0;
wcEleBooksManager.hInstance = hInstance;
wcEleBooksManager.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ELEBOOKSMANAGER));
wcEleBooksManager.hCursor = LoadCursor(NULL, IDC_ARROW);
wcEleBooksManager.hbrBackground = GetStockObject(WHITE_BRUSH);
wcEleBooksManager.lpszMenuName = TEXT("EleBooksManagerMenu");
wcEleBooksManager.lpszClassName = TEXT("EleBooksManager");
return (RegisterClass(&wcEleBooksManager));
}
/****************************************************************************
函数: InitInstance(HANDLE, int)
目的: 保存当前实例,并创建窗口
****************************************************************************/
BOOL InitInstance(HANDLE hInstance,
int nCmdShow)
{
g_Listing.hInst = hInstance;
g_Listing.hWndMain = CreateWindow(
TEXT("EleBooksManager"),
TEXT("电子书管理者"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, /*rect.right - rect.left, rect.bottom - rect.top,*/
CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
g_Listing.hInst,
NULL);
if (!g_Listing.hWndMain)
return (FALSE);
ShowWindow(g_Listing.hWndMain, nCmdShow);
UpdateWindow(g_Listing.hWndMain);
return (TRUE);
}
/****************************************************************************
函数: MainProc(HWND, unsigned, WORD, LONG)
目的: 消息处理
****************************************************************************/
LONG APIENTRY MainProc(HWND hWnd,
UINT message,
UINT wParam,
LONG lParam)
{
WORD wCommand;
static TCHAR szBuf[MAX_PATH];
LPTOOLTIPTEXT lpToolTipText;
/* MENUITEMINFO lpMii;
HMENU hMenu, hMenuTrackPopup;
*/
switch(message)
{
case WM_CREATE:
GetCurrentDirectory(MAX_PATH, szBuf);
sprintf(szDataBasePath, TEXT("%s\\DataBase.db"), szBuf);
g_Listing.NumBooksSort = 0;
g_Listing.NumBooks = 0;
g_Listing.iSelBookSort = -1;
if (CreateAppWindows(hWnd) == FALSE)
return FALSE;
if (OpenNewFile(hWnd) == TRUE)
{
// 打开添加 书 菜单项
EnableMenuItem(GetMenu(hWnd), IDM_ADD,
MF_BYCOMMAND | MF_ENABLED);
// 打开删除 书 菜单项
EnableMenuItem(GetMenu(hWnd), IDM_DEL,
MF_BYCOMMAND | MF_ENABLED);
DrawMenuBar( hWnd);
}else
{
MessageBox(hWnd, TEXT("打开文件失败!"), TEXT("文件"), MB_OK);
}
return 0;
case WM_SIZE:
if (!ResizeWindows(hWnd))
MessageBox(NULL, TEXT("窗口大小改变失败!"), NULL, MB_OK);
return 0;
case WM_NOTIFY:
lpToolTipText = (LPTOOLTIPTEXT)lParam;
if (lpToolTipText->hdr.code == TTN_NEEDTEXT)
{
LoadString(g_Listing.hInst,
lpToolTipText->hdr.idFrom, // 字符串 ID == 控件标实符 ID
szBuf,
sizeof(szBuf));
lpToolTipText->lpszText = szBuf;
}
if(TV_NotifyHandler(hWnd, message, wParam, lParam, &g_Listing))
{
// 更新 列表视图窗口(list view window) 以反映 "书类" 被选中
UpdateListView(g_Listing.hWndListView, g_Listing.iSelBookSort);
// 更新状态栏文本
ChangeSBText(g_Listing.hInst, g_Listing.hWndStatus, g_Listing.iSelBookSort);
}
LV_NotifyHandler(hWnd, message, wParam, lParam, g_Listing.hInst);
return 0;
case WM_COMMAND:
wCommand = LOWORD(wParam);
switch(wCommand)
{
case IDBB_SEARCH://此处用于截获搜索条上的控件消息
switch(HIWORD(wParam))
{
case BN_CLICKED:
{
TCHAR szBookName[80]; //用来保存搜索条中 用户输入的"书名"
HWND hWndEdit; //"书名"编辑框的句柄
INT nBookNameLength; //编辑框中文本的长度
//TCHAR szBuffer[10];
//获取编辑框的句炳
hWndEdit = GetDlgItem(GetParent((HWND)lParam), IDEB_BOOKNAME);
//获取 编辑框 中文本
nBookNameLength = SendMessage(hWndEdit, EM_GETLINE,
(WPARAM)NULL, (LPARAM)szBookName);
szBookName[nBookNameLength] = '\0';
if(0 == nBookNameLength)
{
MessageBox(hWnd, TEXT("请输入书名!"), TEXT("搜索"), MB_OK);
return 0;
}
if(0 == (nBookNameLength = SearchAndUpdateListView(g_Listing.hWndListView, szBookName)))
{
MessageBox(hWnd, TEXT("书库中没此书!"),TEXT("搜索"), MB_OK);
return 0;
}
//sprintf(szBuffer, TEXT("%d"), nBookNameLength);
//MessageBox(hWnd, szBuffer,TEXT("搜索"), MB_OK);
}
return 0;
}
break;
case IDM_ADD:
DialogBox(g_Listing.hInst, MAKEINTRESOURCE(IDD_ADDBOOKDLG),
hWnd, AddBookDlgProc);
// 更新状态栏文本
ChangeSBText(g_Listing.hInst, g_Listing.hWndStatus, g_Listing.iSelBookSort);
return 0;
case IDM_DEL:
{
TCHAR **ppBNList = 0;
int nSelItemNum = 0;
BOOL bDel;
nSelItemNum = SendMessage(g_Listing.hWndListView,
LVM_GETSELECTEDCOUNT, (WPARAM)0, (LPARAM)0);
if(0 == nSelItemNum)
{
MessageBox(hWnd, TEXT("没选择任何书本! 操作无效!"), TEXT("删除"), MB_OK);
return 0;
}
//判断是否是误按 "删除"
if(IDNO == MessageBox(hWnd, TEXT("确定要删除本书?"), TEXT("删除"), MB_YESNO))
{
return 0;
}
// 获取当前活动的 列表项(list view item)的文本,
if(!LV_GetSelItemText(g_Listing.hWndListView, nSelItemNum, &ppBNList))
{
MessageBox(hWnd, TEXT("获取被选择书的书名失败,或内存分配失败!"),
TEXT("删除"), MB_OK);
return 0;
}
//删除 (列表)List View 中的所有项
LV_RemoveAllItems(g_Listing.hWndListView);
// 删除被选择的项
//ListView_DeleteItem(g_Listing.hWndListView, nShoutDelItem);
bDel = DeleteBook(g_Listing.hWndListView, nSelItemNum, ppBNList);
// 弹出消息,告诉用户
//MessageBox(hWnd, bDel ? TEXT("删除成功!"):TEXT("删除失败!"), TEXT("删除"), MB_OK);
}
// 更新状态栏文本
ChangeSBText(g_Listing.hInst, g_Listing.hWndStatus, g_Listing.iSelBookSort);
UpdateListView(g_Listing.hWndListView,
电子书管理者,用于管理电子书,这是源代码.
4星 · 超过85%的资源 需积分: 11 44 浏览量
2009-02-22
15:54:20
上传
评论
收藏 47KB RAR 举报
transistor0
- 粉丝: 20
- 资源: 13
最新资源
- 卡方数据.sav
- Python实现基于Django框架的二手物品购物网站设计源码+数据库.zip
- 基于Python和Django的二手物品购物网站设计源码+数据库脚本.zip
- 【计算机毕业设计】基于h5的移动网赚项目小程序【源码+lw+部署文档+讲解】
- 【计算机毕业设计】基于ssm-vue的oa系统设计与实现【源码+lw+部署文档+讲解】
- 基于pytorch实现的YOLOV5+SORT的车辆行人目标识别及追踪系统源码.zip
- 【计算机毕业设计】基于servlet+jdbc的在线选房系统设计与实现【源码+lw+部署文档+讲解】
- 投身科技创新,勇担时代先锋.pptx
- 【计算机毕业设计】基于SSM的仿微博系统的设计与实现【源码+lw+部署文档+讲解】
- 使用 Web Components 实现,遵循 Material You 设计规范的 Web 前端组件库
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈