///////////////////////////////////////////////////////////////////// //DBスケルトンサンプル 06/25/98 #include "lxapi.h" // NKIT #include "dbapi.h" // for DB Engine // 文字列 char far *msgAppName = "DB-0"; char far *msgQuit = "Quit"; char far *msgOK = "OK"; char far *msgNull = ""; char far **StringTable[] = { &msgAppName, &msgQuit, &msgOK, }; // グローバル変数 LHAPIBLOCK LhapiData; EVENT_NORM app_event; BOOL Done; #define MAX_CARD_WNDS 16 char far *SysMgrPtrs[MAX_CARD_WNDS + 27]; // シスマネ管理 far_pointer_table // 関数プロトタイプ void far DoQuit(void); int far MainHandler(PLHWINDOW Wnd, WORD Message, WORD Data, WORD Extra,...); ///////////////////////////////////////////////////////////////////// // 以下、DBエンジン関連 DBBLOCK dblk; // DBブロック構造体 char db_filename[50] = "c:\\_dat\\phone.pdb"; // DBファイル名 char filetype = 'D'; // タイプ == GDB char paswd[] = ""; // パスワード int DB_open_and_setvpt(void); ///////////////////////////////////////////////////////////////////// // ファンクションキー定義 LHFKEY MainFkeys[] = { { (PLHRES)&msgQuit, (PLHFUNC)DoQuit, 1, 0 }, { (PLHRES)&msgOK, (PLHFUNC)CMD_DONE, 10+FKEY_LAST, FKEY_SENDMSG } }; // メニュー定義 LHMENU MainMenu[] = { { (PLHRES)&msgQuit, (PLHFUNC)DoQuit, 0, 0, NO_HELP }, { 0, 0, 0, 0} }; // WINDOW 定義 LHWINDOW TDateTime = { DateTime, 0, 0, 0, 0, 0, 0, 0, STYLE_DATETIME | STYLE_NOFOCUS, NULL, NO_FKEYS, NO_MENU, NO_HELP }; LHWINDOW MainTitle = { TitleBar, 0, 0, 0, 0, (PLHRES)&msgAppName, 0, 0, STYLE_NOFOCUS, NULL, NO_FKEYS, (PLHMENU)&TDateTime, NO_HELP }; LHWINDOW MainView = { (PLHCLASS)MainHandler, 0, 0, 640, 200, (PLHRES)&msgNull, 0, 0, 0, NULL, MainFkeys, MainMenu, NO_HELP }; // ハンドラー int far MainHandler( PLHWINDOW Wnd, WORD Message, WORD Data, WORD Extra,...) { // ここへアプリケーションの動作が入る return SubclassMsg(Object, Wnd, Message, Data, Extra); } void far DoQuit(void) { Done = TRUE; } int DB_open_and_setvpt(void) //DBオープン,と View_Pointer_Table セット { if (DB_Open(&dblk, db_filename, filetype, NULL, paswd, 0, 0) < 0) return FALSE; if (DB_SetCurrentViewpt(&dblk, 0) < 0) { //View_Ptr_Table を 0 に選択 DB_Close(&dblk); return FALSE; } return TRUE; // ... エラー処理等はもっとマジメにした方が良い(^^; } void FixupFarPtrs(void) { int i; for (i = 0; i < countof(StringTable); i++) *((int *)StringTable[i] + 1) = _DS; // MS_C, LSI_C では修正必要 } // メイン void main(void) { InitializeLHAPI(&LhapiData); m_init_app(SYSTEM_MANAGER_VERSION); m_reg_app_name(msgAppName); m_reg_far(&SysMgrPtrs, countof(SysMgrPtrs), 4); // far_pointer_Table 登録 m_flush_kb(); SetDefaultFont(FONT_NORMAL); SetMenuFont(FONT_NORMAL); DB_Init(); //DBの初期化 DB_open_and_setvpt(); //DBオープン,と View_Pointer_Table セット SendMsg(&MainTitle, CREATE, CREATE_NORMAL, 0); SendMsg(&MainView, CREATE, CREATE_FOCUS, 0); Done = FALSE; while (!Done) //以下イベントループ { DB_FlushFile(&dblk); //DB(バッファ内)データ書き込み app_event.do_event = DO_EVENT; m_action(&app_event); switch (app_event.kind) { case E_ACTIV: case E_REFRESH: FixupFarPtrs(); DB_Reactivate(&dblk); //DB再アクティブ化 ReactivateLHAPI(&LhapiData); break; case E_DEACT: DB_Deactivate(&dblk); //DB非アクティブ化 DeactivateLHAPI(); break; case E_TERM: case E_BREAK: FixupFarPtrs(); Done = TRUE; break; case E_NONE: SendMsg(&TDateTime, DRAW, DRAW_ALL, 0); break; case E_KEY: SendFocusMsg(KEYSTROKE, app_event.data, app_event.scan); break; } } DB_Close(&dblk); //DBクローズ app_event.do_event = DO_FINI; m_action(&app_event); } ///////////////////////////////////////////////////////////////////// |
Count (03/27/1999) ->
update 03/27/1999, since 06/25/1998(original)
Copyright (c) 1999 by guel. All rights reserved.