www.pudn.com > StreamDBTest.rar > StreamDBTest.cpp


// StreamDBTest.cpp : Defines the entry point for the application. 
// 
 
#include "stdafx.h" 
#include "StreamDBTest.h" 
#include  
#include  
#include  
#include  
#include "SysEDB.h" 
#include "DBITEM.h" 
#define MAX_LOADSTRING 100 
 
// Global Variables: 
HINSTANCE			g_hInst;			// current instance 
HWND				g_hWndMenuBar;		// menu bar handle 
 
// Forward declarations of functions included in this code module: 
ATOM			MyRegisterClass(HINSTANCE, LPTSTR); 
BOOL			InitInstance(HINSTANCE, int); 
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM); 
#ifndef WIN32_PLATFORM_WFSP 
INT_PTR CALLBACK	About(HWND, UINT, WPARAM, LPARAM); 
#endif // !WIN32_PLATFORM_WFSP 
 
 
std::vector   g_vecStreamItem; 
LONG				g_Index = 0; 
HWND g_hComboPrefixHandle = NULL; 
 
int WINAPI WinMain(HINSTANCE hInstance, 
                   HINSTANCE hPrevInstance, 
                   LPTSTR    lpCmdLine, 
                   int       nCmdShow) 
{ 
	MSG msg; 
 
	// Perform application initialization: 
	if (!InitInstance(hInstance, nCmdShow))  
	{ 
		return FALSE; 
	} 
 
#ifndef WIN32_PLATFORM_WFSP 
	HACCEL hAccelTable; 
	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_STREAMDBTEST)); 
#endif // !WIN32_PLATFORM_WFSP 
 
	// Main message loop: 
	while (GetMessage(&msg, NULL, 0, 0))  
	{ 
#ifndef WIN32_PLATFORM_WFSP 
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))  
#endif // !WIN32_PLATFORM_WFSP 
		{ 
			TranslateMessage(&msg); 
			DispatchMessage(&msg); 
		} 
	} 
 
	return (int) msg.wParam; 
} 
 
// 
//  FUNCTION: MyRegisterClass() 
// 
//  PURPOSE: Registers the window class. 
// 
//  COMMENTS: 
// 
ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass) 
{ 
	WNDCLASS wc; 
 
	wc.style         = CS_HREDRAW | CS_VREDRAW; 
	wc.lpfnWndProc   = WndProc; 
	wc.cbClsExtra    = 0; 
	wc.cbWndExtra    = 0; 
	wc.hInstance     = hInstance; 
	wc.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_STREAMDBTEST)); 
	wc.hCursor       = 0; 
	wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); 
	wc.lpszMenuName  = 0; 
	wc.lpszClassName = szWindowClass; 
 
	return RegisterClass(&wc); 
} 
 
// 
//   FUNCTION: InitInstance(HINSTANCE, int) 
// 
//   PURPOSE: Saves instance handle and creates main window 
// 
//   COMMENTS: 
// 
//        In this function, we save the instance handle in a global variable and 
//        create and display the main program window. 
// 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 
{ 
    HWND hWnd; 
    TCHAR szTitle[MAX_LOADSTRING];		// title bar text 
    TCHAR szWindowClass[MAX_LOADSTRING];	// main window class name 
 
    g_hInst = hInstance; // Store instance handle in our global variable 
 
#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP) 
    // SHInitExtraControls should be called once during your application's initialization to initialize any 
    // of the device specific controls such as CAPEDIT and SIPPREF. 
    SHInitExtraControls(); 
#endif // WIN32_PLATFORM_PSPC || WIN32_PLATFORM_WFSP 
 
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);  
    LoadString(hInstance, IDC_STREAMDBTEST, szWindowClass, MAX_LOADSTRING); 
 
#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP) 
    //If it is already running, then focus on the window, and exit 
    hWnd = FindWindow(szWindowClass, szTitle);	 
    if (hWnd)  
    { 
        // set focus to foremost child window 
        // The "| 0x00000001" is used to bring any owned windows to the foreground and 
        // activate them. 
        SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001)); 
        return 0; 
    }  
#endif // WIN32_PLATFORM_PSPC || WIN32_PLATFORM_WFSP 
 
    if (!MyRegisterClass(hInstance, szWindowClass)) 
    { 
    	return FALSE; 
    } 
 
    hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE, 
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); 
 
    if (!hWnd) 
    { 
        return FALSE; 
    } 
 
#ifdef WIN32_PLATFORM_PSPC 
    // When the main window is created using CW_USEDEFAULT the height of the menubar (if one 
    // is created is not taken into account). So we resize the window after creating it 
    // if a menubar is present 
    if (g_hWndMenuBar) 
    { 
        RECT rc; 
        RECT rcMenuBar; 
 
        GetWindowRect(hWnd, &rc); 
        GetWindowRect(g_hWndMenuBar, &rcMenuBar); 
        rc.bottom -= (rcMenuBar.bottom - rcMenuBar.top); 
		 
        MoveWindow(hWnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, FALSE); 
    } 
#endif // WIN32_PLATFORM_PSPC 
 
    ShowWindow(hWnd, nCmdShow); 
    UpdateWindow(hWnd); 
 
 
    return TRUE; 
} 
 
// 
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) 
// 
//  PURPOSE:  Processes messages for the main window. 
// 
//  WM_COMMAND	- process the application menu 
//  WM_PAINT	- Paint the main window 
//  WM_DESTROY	- post a quit message and return 
// 
// 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    int wmId, wmEvent; 
    PAINTSTRUCT ps; 
    HDC hdc; 
 
#if defined(SHELL_AYGSHELL) && !defined(WIN32_PLATFORM_WFSP) 
    static SHACTIVATEINFO s_sai; 
#endif // SHELL_AYGSHELL && !WIN32_PLATFORM_WFSP 
	 
    switch (message)  
    { 
        case WM_COMMAND: 
            wmId    = LOWORD(wParam);  
            wmEvent = HIWORD(wParam);  
            // Parse the menu selections: 
            switch (wmId) 
            { 
				case ID_EXIT: 
				case ID_MENU_EXIT: 
					SendMessage (hWnd, WM_CLOSE, 0, 0); 
					break; 
				case ID_MENU_CYCLEADDITEM: 
					{ 
						CSysDB	sysdb; 
						CEOID oid; 
						CListData listdata; 
						sysdb.OpenStreamDB(L"StreamDB.vol"); 
						wsprintf(listdata.m_szwName , L"Lambo_%d" , g_Index); 
						wsprintf(listdata.m_szwPhoneNo ,L"1300000%d" ,  g_Index); 
						g_Index++; 
						DWORD ret = sysdb.AddStreamDBItem(&listdata , sizeof(listdata)); 
						sysdb.CloseDBHandle(); 
						if(ret == ERROR_ALREADY_EXISTS) 
							MessageBox(hWnd, L"ERROR_ALREADY_EXISTS" , L"" , MB_OK); 
						int a; 
						a = 1; 
					} 
					break; 
				case ID_MENU_DELETEALLITEM: 
					{ 
						 
					} 
					break; 
				case ID_MENU_CYCLEREADITEM: 
					{ 
						int classSize = 0; 
						classSize = sizeof(CListData); 
						classSize = sizeof(CCallRecordData); 
						classSize = sizeof(CSMSRecordData); 
						CSysDB	sysdb; 
						CEOID oid; 
						CListData listdata; 
						sysdb.OpenStreamDB(L"StreamDB.vol"); 
						sysdb.BeginRead(&oid); 
						while(oid) 
						{ 
							sysdb.ReadNextRecord(&oid , &listdata); 
						} 
						sysdb.CloseDBHandle(); 
						int a; 
						a = 1; 
					} 
					break; 
				case ID_MENU_ADDSTREAMITEM: 
					{ 
						CSysDB	sysdb; 
						//sysdb.OpenDB(L"SysDB.vol"); 
						sysdb.OpenStreamDB(L"StreamDB.vol"); 
						ITEMData item; 
						wsprintf(item.name , L"Matin_%d" , g_Index++); 
						sysdb.AddStreamDBItem(item); 
						sysdb.CloseDBHandle(); 
 
						sysdb.OpenStreamDB(L"StreamDB.vol"); 
						sysdb.GetAllStreamItem(g_vecStreamItem); 
						int dbCount = sysdb.GetDBItemCount(); 
						int count = g_vecStreamItem.size(); 
						sysdb.CloseDBHandle(); 
					} 
					break; 
				case ID_MENU_RELOADDBITEM: 
					{ 
						g_vecStreamItem.clear(); 
						//g_hDB = new CDB(); 
						CSysDB	sysdb; 
						//sysdb.OpenDB(L"SysDB.vol"); 
						sysdb.OpenStreamDB(L"StreamDB.vol"); 
						sysdb.GetAllStreamItem(g_vecStreamItem); 
						sysdb.CloseDBHandle(); 
						//SendMessage(g_hComboPrefixHandle, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0); 
						//for(UINT i=0; i