home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2002 January / VPR0201B.ISO / APUPDATE / VC / TXC0601A / TXC0601A.LZH / _LIST.H < prev    next >
C/C++ Source or Header  |  2001-04-09  |  18KB  |  456 lines

  1. #ifndef _LIST_H
  2. #define _LIST_H
  3.  
  4. //##LIST
  5.  
  6. typedef struct tagLISTITEM {
  7.     struct tagLISTITEM* next;    //WZ4.00Bj 990815 nextをoffset=0にした。高速化
  8.     struct tagLISTITEM* prev;
  9.     WORD sizeitem;            // WZ MAILでは、itemのサイズをセットすること
  10.     WORD iNest:7;            // for Tree表示    //991220 8->7
  11.     WORD fSelect:1;            // 選択中
  12.     WORD fBold:1;            // 太字で表示
  13.     WORD iMultiString:4;    //981017 fMultiString時の現在のindex
  14.     WORD iColor:3;            // 色分けindex    //WZ4.00Ca 991220 new
  15.         #define LIST_MAXCOLOR    8    // この色数の色分けが可能。将来変更する場合あり。
  16. } LISTITEM;
  17.  
  18. typedef struct tagTREEITEM {
  19.     struct tagLISTITEM* next;    //WZ4.00Bj 990815 nextをoffset=0にした。高速化
  20.     struct tagLISTITEM* prev;
  21. // 以上、LISTITEMと共通
  22. // status
  23.     HTREEITEM tvitem;    // 対応するHTREEITEM
  24. // 以下、ユーザ直接指定。中途変更可
  25.     BYTE iHeadline;        // 見出しレベル(0:本文,1:見出し1...)
  26.     mchar* szName;        // 見出し名(malloced) listがfreeする。
  27.     BYTE iImage;
  28.     BYTE iSelectedImage;
  29. // 以上、ユーザ直接指定
  30. } TREEITEM;
  31.  
  32. typedef struct {
  33.     HBITMAP hBitmap;
  34.     WORD index;
  35. } HBITMAP_INDEX;
  36.  
  37. typedef struct {
  38.     BYTE type;        // 項目内容のタイプ
  39.         #define LISTITEM_SZ            1    // (mchar [])
  40.         #define LISTITEM_SZP        2    // (mchar *)
  41.         #define LISTITEM_INT        3    // (int)
  42.         #define LISTITEM_FILETIME    4    // (FILETIME)
  43.         #define LISTITEM_INTB        5    // (BYTE)
  44.         #define LISTITEM_CHOICEB    6    // (BYTE)index
  45.         #define LISTITEM_MESSAGEID    7    // (MESSAGEID* )
  46.         #define LISTITEM_HBITMAP    8    // HBITMAP(ハンドルの解放はクライアントが行う)
  47.         #define LISTITEM_HBITMAP_INDEX 9// HBITMAP_INDEX(ハンドルの解放はクライアントが行う)
  48.         #define LISTITEM_SIZE        10    // (UINT)bytes    //WZ4.00Ca 991210 new
  49.         #define LISTITEM_WSZ        11    // (wchar [])    //WZ4.00Ca 991210 new !UNICODE環境ではANSIに変換して表示。
  50.         #define LISTITEM_WSZP        12    // (wchar *)    //WZ4.00Ca 991210 new !UNICODE環境ではANSIに変換して表示。
  51.         #define LISTITEM_INTW        13    // (WORD)        //WZ4.00Ea 000925 new
  52.         #define LISTITEM_CHOICE        14    // (DWORD)index    //WZ4.00Ea 001118 new
  53.     UINT offset;        // 項目内容のLISTITEMの先頭からのオフセット
  54.     int cx;                // 幅
  55.                         // 0なら全く表示しない(セル間の余白も表示しない)
  56.                         // -1なら右端までをこのセルの幅とする
  57.     HBITMAP* tHbitmap;    //WZ3.90I 981004 LISTITEM_CHOICE/LISTITEM_CHOICEBなら、まずこれを見る。
  58.                         // これがNULLならtszIndexを見る
  59. #if WZFUNC_MAILBASE    ////とりあえず
  60.     HIMAGELIST imagelist;// tHbitmapと同列。    //WZ4.00Ed 010309 new
  61. #endif
  62.     mchar** tszIndex;    // for index
  63.     mchar* cszIndex;    // tszIndexがNULLならこちらを見る(カンマ区切り)
  64.     WORD fSkipRe:1;        // ソート時にstrSkipReする?
  65.     WORD fDateOnly:1;    // LISTITEM_FILETIMEで時刻を表示しない
  66.     WORD fNoYear:1;        // LISTITEM_FILETIMEで年を表示しない
  67.     WORD fCenter:1;        // とりあえずtHbitmapのみ対応
  68.     WORD fRight:1;        // 右揃え?
  69.     WORD fLeftSpace:1;    // 左端に余白を空ける?    //WZ4.00Cb 000116 new
  70.     WORD fGuideBitmap:1;// szGuideはHBITMAPである?
  71.     WORD fIndexAZ:1;    // cszIndexを0と'A','B',...でindexする?    //WZ4.00Ea 001118 new
  72.     WORD fMultiString;    //WZ3.90I 981017 |で区切った複数の文字列
  73. #if !WINDOWSCE    // header
  74.     mchar szGuide[30];
  75. #endif
  76. } SUBLISTITEMATR;
  77. #define MAX_SUBLISTITEM        15
  78.  
  79. typedef struct {
  80.     COLORREF rgb;
  81. } LISTCOLOR;    // この構造体メンバは増加する可能性があるので0クリアしてから使用すること。
  82.  
  83. typedef struct tagLIST {
  84. // for data handle
  85.     LISTITEM* top;
  86.     LISTITEM* end;            // 正確ではないことがある
  87.                             // listFlushEndで正確になる
  88.     int n;                    // データ数
  89.     WORD fTypeTree:1;        //WZ4.00Bj 990815 TREELIST ? 
  90.     WORD fTypeTail:1;        // iCur = nのジャンプができるかどうか?
  91.     WORD fTypeFilelist:1;    //WZ4.00Cb 000117 ファイルリスト用
  92.     WORD fCalendar:1;        //WZ4.00Ea 001105 カレンダー表示モード? WZFUNC_MAILBASE用
  93. // for select
  94.     BOOL fSelect;        // 選択中?
  95.     int nSelect;        // 選択されたデータ数(0の場合もあり)
  96.     int iCurSelect;        // 選択開始時のiCur
  97.     int iCur;            // 現在のindex
  98. // 以上、TREELISTと共通
  99. // for item認識
  100.     int nSubitem;
  101.     SUBLISTITEMATR tSubitem[MAX_SUBLISTITEM];
  102. // config
  103.     COLORREF rgbBackSelect;    // 選択色
  104.     COLORREF rgbTextSelect;
  105.     COLORREF rgbBackCurUnfocus;    // フォーカスを持たないときのカーソル色
  106.     COLORREF rgbTextCurUnfocus;
  107.     COLORREF rgbBack;    // 通常色
  108.     COLORREF rgbText;
  109.     LISTCOLOR* tColor;    // iColorによる色分けを行う場合は、LIST_MAXCOLOR個のLISTCOLORをアロケートしてセットすること。
  110. // for display
  111.     HWND hwnd;            // (TREELIST)TREELISTではユーザ直接指定。
  112.     CBOOL fUndisp;        // (TREELIST)
  113.     HBRUSH hbrushBackSelect;
  114.     HBRUSH hbrushBackCurUnfocus;
  115.     HBRUSH hbrushBack;
  116.     int idd;            // 自分自身のIDD
  117.     HFONT hfont;
  118.     HWND hwndHeader;    // ヘッダ付きの場合はヘッダーコントロールのHWNDのコピー
  119.     int cxChar;
  120.     int cyChar;
  121.     int cxClient;
  122.     int cyClient;
  123.     SIGNED_WORD cxDigit;    //WZ4.00Cb 000117 数字の幅
  124.     SIGNED_WORD cxSlash;    //WZ4.00Cc 000122 '/'の幅
  125.     SIGNED_WORD cxColon;    //WZ4.00Cc 000122 ':'の幅
  126.     SIGNED_WORD cxSpace;    //WZ4.00Cc 000122 ' 'の幅
  127.     SIGNED_WORD cxItemSpace;//WZ4.00Cc 000122 項目間の余白。デフォルト値が設定される。
  128.     int xbase;            //WZ4.00Be 990512 横スクロール中なら!=0
  129.     int iScreentop;        // スクリーン上端のindex
  130.     int lcyWindow;        // 行内容をすべて表示できる行数
  131.     int ly;                // 現在のindexのly(0 <= ly < lcyWindowならindexは画面内)
  132.     int lyAtMinimized;    // 最小化したときのly    //WZ3.90M 981128 
  133.     BBOOL fUndispFocus;    // 現在行を反転表示しない
  134.     BBOOL fHaveFocus;    // フォーカスを持っている?
  135.     BBOOL fImeWasOn;    // フォーカスを得たときのIMEの状態
  136.     int color0;
  137.     BBOOL fListFlushScrollBarPosted;
  138. // for fMultiString
  139.     HWND hwndCombobox;
  140. // sort
  141.     WORD fSortBreakable:1;    // ShiftまたはEscでソートの中止が可能?
  142.     WORD fSortBreaked:1;    // 前回のソートで中止した
  143. // user data
  144.     DWORD custdata;
  145.     BBOOL fNeedFlushSortid;
  146. // クライアント直接設定
  147.     BYTE modeKey;            //WZ4.00Ca 991218 (ME_WINまたはME_VZ)
  148.     UINT dlgcode;            // 初期値DLGC_WANTARROWS
  149.     WORD fNoScrollBarH:1;    //WZ4.00Be 990512 横スクロールバーは付けない
  150.     WORD fNoHeaderTrack:1;    //WZ4.00Cb 000117 ヘッダカラム幅の変更を禁止?
  151.     WORD fNoSelect:1;        //WZ4.00Db 000213 選択をしない?
  152.     void (*listitemOnFree)(LISTITEM* item);    // listitemが解放されるときに呼び出すクライアント定義関数。
  153. // TREELIST status
  154.     WORD fRemaking:3;        // listTvDispAll中?
  155.     IFILE adrSearch;        // 検索中のアドレス
  156.     DWORD nEdit;            // text->nEditと比較。
  157. // 以下、TREELISTユーザ直接指定
  158.     WORD fImageList:1;        // イメージを使用?
  159.     WORD fOwnerDrawText:1;    // オーナドロー?
  160.     WORD fMemo:1;            // WZ MEMO用
  161.     WORD fMemoText:1;        // WZ MEMO用(新しいメモファイルフォーマットを使用?)
  162.                             // これをセットする場合はfMemoもセットすること。
  163.     WORD modeMemoDispDate:2;// WZ MEMO用
  164.     BYTE iHeadlineMin;        // 最小の見出し番号(0:見出し1,1:見出し2...)
  165.     int lcxMaskName;        // szNameのマスク
  166.     TX* text;                // アウトラインを抽出するテキスト
  167.     TX* textClip;            // カットアンドペースト用
  168.     int iMove;                // 移動先(-1:指定なし)
  169. // 以上、TREELISTユーザ直接指定
  170. #if WZFUNC_MAILBASE////とりあえず
  171. // カレンダー表示モード    //WZ4.00Ea 001105 
  172.     int iSubitemCalendar;    // カレンダー表示するLISTITEM_FILETIMEのiSUBITEM
  173.     UINT offsetFiletime;    // カレンダー表示するLISTITEM_FILETIMEのアイテムoffset
  174.     UINT offsetSubject;        // カレンダー表示するLISTITEM_SZ/LISTITEM_SZPのアイテムoffset
  175.     UINT offsetFtTerm;        // カレンダー表示するLISTITEM_FILETIMEで期限のアイテムoffset
  176.                             // 0の場合は期限なし。
  177.     BYTE typeSubject;        // offsetSubjectのLISTITEM_xxx
  178.     FILETIME ftCur;            // カーソル位置の日時
  179.     FILETIME ftPreDisp;        // 前回表示したときの表示開始ft
  180.     FILETIME ftFlush;        // fDispFlushOneで表示する日にち
  181.     WORD wDay0;                // CalendarPageUp/PageDown開始したときの日付
  182.     WORD fDispFlushOne:1;    // ftFlushのみ表示?
  183.     WORD fDispAlled:1;        // fDispFlushOneで結局DispAllした?
  184.     WORD fOnSelchangeDate:1;// 内部フラグ
  185. // クライアント直接設定
  186.     WORD fMondayTop:1;        // TRUE=月曜を先頭、FALSE:日曜を先頭
  187.     WORD viewCarendar:3;
  188.         #define LISTVIEW_MONTH    0
  189.         #define LISTVIEW_2WEEK    1
  190.         #define LISTVIEW_WEEK    2
  191.         #define LISTVIEW_DAY    3    // 未完成
  192.         #define LISTVIEW_N        3    // 種類数
  193. #endif
  194. } LIST;
  195.  
  196. #define WM_LIST_FLUSHSCROLLBAR    (WM_TXUSER+0)
  197. #define WM_LIST_DRAGSTART        (WM_TXUSER+1)        //WZ3.90I 981026 
  198.  
  199. typedef struct {
  200.     NMHDR hdr;    //PWZ2BETA0.3 980523 hdrが先頭にないといけなかった
  201.         #define LISTN_SELCHANGE        10
  202.         #define LISTN_SELCHANGEPRE    11
  203.         #define LISTN_FORWARD        12    //WZ4.00Ca 991212 
  204.         #define LISTN_DRAGSTART        13    //WZ3.90I 981026 
  205.         #define LISTN_SELECTCHANGE    14    //WZ4.00Ca 991214 選択状態が変化した?
  206.         #define LISTN_FTCHANGE        15    //WZ4.00Ea 001112 fCalendar:日付が変化した
  207.     LIST* list;
  208.     int iCur;
  209.     int iSublistitem;    // WM_LBUTTONDBLCLKのときはマウスクリックされたペイン番号
  210. // for LISTN_FORWARD
  211.     UINT message;        // LISTN_FORWARDでないときは0
  212.     WPARAM wParam;
  213.     LPARAM lParam;
  214. // for LISTN_FTCHANGE
  215. #if WZFUNC_MAILBASE////とりあえず
  216.     FILETIME ft;        // 変更後の日付
  217. #endif
  218. // クライアントの指示
  219.     BYTE fCapture:1;    // LISTN_FORWARD:KEYDOWN/SYSKEYDOWNでlist標準の処理をしない?
  220.                         // ダイアログボックス用。WM_NOTIFYでTRUEを返せないので。
  221. } LISTNOTIFY;
  222.  
  223. typedef WORD SECONDS;    //WZ4.00Ea 001107 
  224.  
  225. #if !__TXC__
  226. extern wchar wszclassList[];
  227. extern mchar szclassList[];
  228. #endif
  229. //PWZ2BETA0.9A 980623 listウィンドウを作成するときは必ずLIST_WS_DEFAULTも指定してください
  230. #define LIST_WS_DEFAULT        WS_VSCROLL
  231. #define WSLIST_HEADER        0x0001    //WZ4.00Bl 990924 ヘッダウィンドウを付ける?
  232.  
  233. #define listFromHwnd(hwnd)    ((LIST*)hwndGetContext(hwnd))
  234. #define listJumpTail(list)    {list->iCur = list->n;}
  235. #define listCurIsTail(list)    (list->iCur == list->n)
  236.  
  237. #if __TXC__
  238.     #define LISTITEM    void
  239. #endif
  240.  
  241. LIST* TXAPI_(1013) listNew(void);
  242. void TXAPI_(1014) listDelete(LIST* list);
  243. LIST* listNewEx(HWND hwndParent,DWORD ws);
  244.  
  245. // 追加・挿入
  246. void TXAPI_(1015) listAdd(LIST* list,LISTITEM* item);
  247. void TXAPI_(1121) listAddItem(LIST* list,LISTITEM* item,LISTITEM* insert);
  248. void TXAPI_(1016) listInsert(LIST* list,LISTITEM* item);
  249. void TXAPI_(1017) listInsertItem(LIST* list,LISTITEM* item,LISTITEM* insert);
  250. void TXAPI_(1018) listItemLink(LIST* list,LISTITEM* itemPrev,LISTITEM* item);
  251.  
  252. // 削除
  253. BOOL TXAPI_(1019) listDel(LIST* list,LISTITEM* item);
  254. void TXAPI_(1020) listDelAll(LIST* list);
  255. void TXAPI_(1021) listDelCur(LIST* list);
  256. void TXAPI_(1022) listItemRelease(LIST* list,LISTITEM* item);
  257.  
  258. // 表示
  259. void TXAPI_(1023) listDisp(LIST* list,int ly);
  260. void TXAPI_(1024) listDispI(LIST* list,int i);
  261. void TXAPI_(1025) listDispCur(LIST* list);
  262. void TXAPI_(1026) listDispAll(LIST* list);
  263. void TXAPI_(1027) listSetUndisp(LIST* list);
  264. void TXAPI_(1028) listSetDisp(LIST* list);
  265. void TXAPI_(1029) listSetLy(LIST* list,int ly);
  266. void TXAPI_(1030) listSetLyCenter(LIST* list);
  267. void TXAPI_(1031) listJump(LIST* list,int iCur);
  268. void TXAPI_(1032) listJumpItem(LIST* list,LISTITEM* item);
  269. void TXAPI_(1033) listJumpTop(LIST* list);
  270. void TXAPI_(1034) listJumpEnd(LIST* list);
  271. BOOL TXAPI_(1035) listJumpPrev(LIST* list);
  272. BOOL TXAPI_(1036) listJumpNext(LIST* list);
  273. void TXAPI_(1037) listSetFont(LIST* list,mchar* lfFaceName,int lfHeight);
  274. void TXAPI_(1038) listSetHfont(LIST* list,HFONT hfont);
  275. BOOL TXAPI_(1039) listFind(LIST* list,mchar* szFind);
  276.  
  277. // フラッシュ
  278. void TXAPI_(1040) listFlushLcy(LIST* list);
  279. void TXAPI_(1041) listFlushEnd(LIST* list);
  280. void TXAPI_(1131) listFlushColor(LIST* list);
  281.  
  282. // 情報取得
  283. LPVOID TXAPI_(1042) listRead(LIST* list,int iMailhead);
  284. LPVOID TXAPI_(1043) listReadCur(LIST* list);
  285. int TXAPI_(1044) listGetIndex(LIST* list,LISTITEM* listitem);
  286. LISTITEM* TXAPI_(1045) listGetLastSameNest(LISTITEM* now,LISTITEM* end);
  287.  
  288. // 編集・ソート
  289. BOOL TXAPI_(1046) listMoveUp(LIST* list);
  290. BOOL TXAPI_(1047) listMoveDown(LIST* list);
  291. BOOL TXAPI_(1048) listMoveTop(LIST* list,LISTITEM* item);
  292. typedef struct {
  293.     int iSubitem1;
  294.     BOOL fLargetop1;
  295.     int iSubitem2;
  296.     BOOL fLargetop2;
  297.     int iTop;    // ソート範囲(開始i)(SORTBLOCK時のみ対応)    iTop=iEnd=0なら全てソート
  298.     int iEnd;    // ソート範囲(終了i)(SORTBLOCK時のみ対応)
  299.     WORD fSortFileext:1;    // 拡張子順・名前順にソート?(LISTITEM_WSZ,LISTITEM_WSZPのみ対応)
  300.     WORD fNoSenseCase:1;    // 大文字・小文字を区別しない?(LISTITEM_WSZ,LISTITEM_WSZPのみ対応)
  301. } LISTSORTARG;
  302. #define listSortEx(list,item1,f1,item2,f2)    {LISTSORTARG arg;structClear(arg);arg.iSubitem1=item1;arg.fLargetop1=f1;arg.iSubitem2=item2;arg.fLargetop2=f2;listSortArg(list,&arg);}
  303. void TXAPI_(1049) listSortArg(LIST* list,LISTSORTARG* arg);
  304. void TXAPI_(1050) listSort(LIST* list,int iSubitem,BOOL fLargetop);
  305.  
  306. // 選択
  307. BOOL TXAPI_(1051) listGetSelect(LIST* list);
  308. void TXAPI_(1052) listSelectQuit(LIST* list);
  309. BOOL TXAPI_(1053) listSelectStartFlag(LIST* list);
  310. void TXAPI_(1054) listSelectAll(LIST* list);
  311. void TXAPI_(1129) listSelectSwitch(LIST* list);
  312. void TXAPI_(1055) listSelectSwitchAll(LIST* list);
  313. void TXAPI_(1056) listSelectCur(LIST* list);
  314. void TXAPI_(1057) listSelectItem(LIST* list,LISTITEM* item);
  315. void TXAPI_(1125) listSelectSetItem(LIST* list,LISTITEM* item,BOOL fSet);
  316. LISTITEM* TXAPI_(1058) listWalkStart(LIST* list);
  317. LISTITEM* TXAPI_(1059) listWalkNext(LIST* list,LISTITEM* now);
  318.  
  319. // ユーザ操作
  320. BOOL TXAPI_(1074) listUserUp(LIST* list);
  321. BOOL TXAPI_(1075) listUserDown(LIST* list);
  322. void TXAPI_(1132) listUserPrevPage(LIST* list);
  323. void TXAPI_(1133) listUserNextPage(LIST* list);
  324.  
  325. // その他
  326. void TXAPI_(1073) listNotifySelchange(LIST* list);
  327. void TXAPI_(1076) listGetItemRect(LIST* list,RECT* r);
  328. int TXAPI_(1077) dtcxListString(LIST* list,mchar* _sz);
  329. int TXAPI_(1114) dtcxList(LIST* list,int _dtcx);
  330. void listRegister(void);
  331. int dtcyList(LIST* list,int _dtcy);
  332. void TXAPI_(1078) listHeaderSetup(LIST* list);
  333. int TXAPI_(1079) listHeaderConvertIndex(LIST* list,int iItem);
  334.  
  335. #if __TXC__
  336.     #undef LISTITEM
  337. #endif
  338.  
  339. //##listh
  340.  
  341. #if !__TXC__
  342. extern wchar wszclassListH[];    //WZ4.00Be 990512 
  343. extern mchar szclassListH[];
  344. #endif
  345.  
  346. HWND TXAPI_(1113) listh_GetListWindow(HWND hwnd);
  347. LIST* TXAPI_(1072) listh_GetList(HWND hwnd);
  348.  
  349. //##TREELIST
  350.  
  351. // 見出し
  352. BOOL check_iHeadline(int iHeadline);
  353. // TreeView
  354. LIST* listTvNew(void);
  355. BOOL listTvDispAll(LIST* list);
  356. TREEITEM* listTvSearch(LIST* list,HTREEITEM tvitem);
  357. TREEITEM* listTvSearchNearest(LIST* list,HTREEITEM tvitem);
  358. TREEITEM* listTvGetCur(LIST* list);
  359. TREEITEM* listTvSetCur(LIST* list);
  360. TREEITEM* listTvJump(LIST* list,int iCur);
  361. // iHeadline処理
  362. TREEITEM* listJumpSameNestTop(LIST* list,int nNest);
  363. TREEITEM* listJumpSameNestEnd(LIST* list,int nNest);
  364. TREEITEM* listJumpSameNestTail(LIST* list,int nNest);
  365. int listGetCurNestChilds(LIST* list);
  366. // Outline of list->text
  367. typedef struct {
  368.     TREEITEM head;            // メモの場合、head.szNameには頭に日付が入る場合がある。
  369.     NPARA npara;
  370.     mchar szMemoAtr[30];    // メモの作成日:更新日
  371.     mchar* szName;            // 純粋な見出しの名前(メモ以外はhead.szNameと同じ)
  372. } OUTLINEITEM;
  373. BOOL olGetText(LIST* list,TX* textContent,HWND hwndEdit);
  374. BOOL olSetText(LIST* list,TX* textContent,HWND hwndEdit);
  375. void olClear(LIST* list);
  376. void olCut(LIST* list);
  377. void olCopy(LIST* list);
  378. void olCutWithClip(LIST* list);
  379. void olCopyWithClip(LIST* list);
  380. BOOL olPaste(LIST* list);
  381. BOOL olPasteText(LIST* list,TX* textClip);
  382. BOOL olMovePrim(LIST* list,int src,int nitem,int dst,BOOL fAdjustHeadline);
  383. void olMoveUp(LIST* list);
  384. void olMoveDown(LIST* list);
  385. void olMoveTop(LIST* list);
  386. void olMoveEnd(LIST* list);
  387. void olFlush(LIST* list);
  388. BOOL olSetName(LIST* list,OUTLINEITEM* item,mchar* szName);
  389. OUTLINEITEM* olSearch(LIST* list,mchar* szName,int iHeadline);
  390. OUTLINEITEM* olNparaToItem(LIST* list,NPARA npara);
  391. BOOL oluiSearch(LIST* list);
  392. BOOL olSearchNext(LIST* list);
  393. BOOL olSearchPrev(LIST* list);
  394. BOOL olAddHeadline(LIST* list,int add,BOOL fChild);
  395. OUTLINEITEM* olInsert(LIST* list,OUTLINEITEM* itemPrev,mchar* szName,int iHeadline,UINT mode,...);
  396.     #define OLI_CONTENT        0x0001    // itemPrevの内容を新しい項目の内容として引き継ぐ。
  397.     #define OLI_NEXT        0x0002    // itemPrev以降のiHeadlineの次に挿入する。
  398.     #define OLI_INSERTPREV    0x0004    // itemPrevの直前に挿入する。
  399.     #define OLI_CFUNC        0x0008    // Cの関数定義の場合は関数本体も挿入する。
  400.     #define OLI_INSERTCONTENT    0x0010    // modeの後に指定されたtextContentを内容として挿入する。
  401. BOOL olSaveEdited(LIST* list,BOOL fQuery);
  402. void olCurTextToTv(LIST* list);
  403. void olCurTvToText(LIST* list);
  404. BOOL oluiSetMoveto(LIST* list);
  405. BOOL olMove(LIST* list);
  406.  
  407. #define ITEM_ROOT        ((LPVOID)0xFFFF0000)    //WZ4.00Ca 991213 TVI_ROOTから変更
  408. #define TVS_TREELIST    (WS_GROUP|WS_TABSTOP|WS_BORDER|WS_CHILD|WS_VISIBLE|TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS)
  409.  
  410. void olFlush(LIST* list);
  411.  
  412. //##LISTFILE
  413.  
  414. typedef struct {
  415.     LISTITEM head;
  416. // mydata
  417.     FILETIME filetime;
  418.     BYTE fFolder;    // ディレクトリ?
  419.     wchar wszfilename[CCHPATHNAME];
  420.     UINT size;
  421. } FILEITEM;
  422.  
  423. typedef struct {
  424.     LIST* list;
  425.     HWND hwndinfo;        // 情報ウィンドウ
  426.     wchar wszpath[CCHPATHNAME];    // カレントパス・マスク
  427. // 内部設定(read only)
  428.     WORD fAllocList:1;    // listはlistfileがallocした?
  429.     WORD fOpen:1;        // openされた?
  430.     WORD fOnSelectOp:1;    // 選択処理中?
  431.     DWORD sizeSelect;    // 選択されている合計バイト数
  432.     int nFolder;        // 現在のフォルダ数。フォルダは必ずlistの先頭部分に入れる
  433.     int idmSort;        // 現在のソートモード
  434. // 外部設定
  435.     WORD lfBold;
  436.     WORD fFileopen:1;        // 「ファイルを開く」用?
  437.     WORD fJumpFiletop:1;    // フォルダのロード時にカーソル位置をファイルリストの頭に移動?
  438.     WORD fJumpSaveOnLoad:1;    //WZ4.00Cc 000122 listfileLoadでファイルが見つからないときはiCur位置にジャンプ?
  439.     WORD fFolderOnly:1;        // フォルダ一覧のみを読み込む。
  440.     WORD fFilelistRight:1;    //WZ4.00Cb 000116 ファイル名一覧を右側に表示?
  441.     WORD fFolderSortByName:1;//WZ4.00Db 000210 フォルダは名前順で表示?
  442. } LISTFILE;
  443.  
  444. LISTFILE* listfileNew(void);
  445. void listfileSetWindow(LISTFILE* listfile,LIST* list);
  446. BOOL listfileSearch(LISTFILE* listfile,wchar* wszfilename);
  447. BOOL listfileGetFilename(LISTFILE* listfile,wchar* wszfilename);
  448. void listfileSort(LISTFILE* listfile,int idm);
  449. BOOL listfileMovePath(LISTFILE* listfile,wchar* _wszname);
  450. void listfileSetupList(LISTFILE* listfile);
  451. BOOL listfileSetPath(LISTFILE* listfile,wchar* wszpath);
  452. BOOL listfileOpen(LISTFILE* listfile);
  453. BOOL listfileSearchAccessKey(LISTFILE* listfile,int key);
  454.  
  455. #endif    // _LIST_H
  456.