ファイラスケルトン

  ListView.h



  
#include "resource.h"
#include <lightbox.h>

ATOM MyRegisterClass( HINSTANCE hInstance );
BOOL InitInstance( HINSTANCE, int );
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
LRESULT CALLBACK About( HWND, UINT, WPARAM, LPARAM );
void InitWndProc( HWND hWnd );
void EndWndProc( HWND hWnd );
LRESULT CALLBACK OperatorEvent( HWND, UINT, WPARAM, LPARAM );
LRESULT CALLBACK TestDialogListbox( HWND, UINT, WPARAM, LPARAM );
void LoadFile( void );

#define MAX_LOADSTRING 100
#define ID_STATUS (LBOX_ID_BASE+1)
#define ID_LISTBOX (LBOX_ID_BASE+2)

MyEXTERN HINSTANCE hInst;
MyEXTERN TCHAR szTitle[MAX_LOADSTRING];
MyEXTERN TCHAR szWindowClass[MAX_LOADSTRING];
MyEXTERN char szBuffer[1024];	// 共通作業バッファ
MyEXTERN LboxTool Tool;		// ツールオブジェクト
MyEXTERN LboxFileSystem Fs;	// ファイルシステムオブジェクト
MyEXTERN LboxWin *Win;		// ウインドウオブジェクト
MyEXTERN LboxListview *Lview;	// ツリービューオブジェクト
MyEXTERN LboxDlg *Dlg;		// ダイアログオブジェクト
MyEXTERN LboxListbox *Listbox;	// リストボックスオブジェクト
  



  InitWndProc.cpp



  
#include "stdafx.h"

#define MyEXTERN extern
#include "ListView.h"

// *********************************************************
//   関数: InitWndProc
// *********************************************************
void InitWndProc( HWND hWnd )
{
	// リストボックス作成
	Listbox = new LboxListbox(
		hWnd,
		ID_LISTBOX
	);

	// リストビューの作成
	Lview = new LboxListview(
		hWnd,
		LBOX_LISTVIEW_CREATE
	);
	// グリッドオプション
	Lview->Grid( );
	// フォント設定 ( MS Pゴシック )
	Lview->SetFont( 0, 10, false );
	// ポップアップメニューの実装
	Lview->CreatePopup( IDR_MENU1, 0 );
	// カラム作成
	Lview->AddColumn( LVCFMT_LEFT, 100, "ファイル名" );
	Lview->AddColumn( LVCFMT_RIGHT,100, "サイズ" );
	Lview->AddColumn( LVCFMT_LEFT, 150, "更新日" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "8.3ファイル名" );
	// カレントディレクトリ情報の設定
	LoadFile( );

	// メインウインドウ登録
	Win = new LboxWin( hWnd );
	// ステータスバー実装
	Win->StatusCreate( ID_STATUS );
	// ステータスバー表示
	Win->StatusSetText( "ListView スケルトン" );
	// デスクトップフィットサイズ
	Win->ScreenFit( );

}
  



  LoadFile.cpp

  
#include "stdafx.h"

#define MyEXTERN extern
#include "ListView.h"

// *********************************************************
// カレントディレクトリの情報をリストビューにセット
// *********************************************************
void LoadFile( void )
{
	Listbox->Reset( );
	Lview->Reset();

	LboxEnumFile( Listbox->hWnd, 0 );

	int nRows,i,j;

	nRows = Listbox->Count( );
	for( i = 0; i < nRows; i++ ) {
		Listbox->GetText(
			i,
			szBuffer,
			sizeof( szBuffer )
		);
		Lview->CreateToken( szBuffer, "\t" );

		if ( lstrcmp( Lview->Token[0], "." ) == 0 ) {
			continue;
		}
		Lview->AddRow();

		for( j = 0; j < 5; j++ ) {
			Lview->SetColumnText( j, Lview->Token[j] );
		}

	}
	Lview->Fit( );
}
  



  WndProc.cpp

  
#include "stdafx.h"

#define MyEXTERN extern
#include "ListView.h"

// *********************************************************
//  関数: WndProc
// *********************************************************
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch( message ) {
		// 初期処理
		case WM_CREATE:
			InitWndProc( hWnd );
			break;

		// サイズ変更
		case WM_SIZE:
			Win->StatusFit( wParam, lParam );
			Lview->ParentFit(
				(DWORD)wParam,
				0, 0,
				0, Win->GetHeight( Win->hStatus )
			);
			break;

		// オペレータイベント
		case WM_COMMAND:
			return OperatorEvent( hWnd, message, wParam, lParam );

		// リストビューの通知イベント
		case WM_NOTIFY:
			Lview->Notify( lParam );

			// 該当リストビューからの通知の時
			if ( Lview->hCurrent == Lview->hWnd ) {
				// ダブルクリック
				if ( Lview->Action == NM_DBLCLK ) {
					// 正しく行が選択されていない時は何もしない
					if ( Lview->nCurrentRow == -1 ) {
						break;
					}
					
					// ファイル名を取得
					Lview->GetColumnText(
						0,
						szBuffer,
						sizeof( szBuffer )
					);
					// ディレクトリならば、そこへ移動して一覧表示
					if ( Fs.IsDirectory( szBuffer ) ) {
						Fs.ChangeDirectory( szBuffer );
						LoadFile( );
					}
				}
			}

			break;

		// 終了処理
		case WM_DESTROY:
			EndWndProc( hWnd );

			PostQuitMessage( 0 );
			break;

		default:
			return DefWindowProc( hWnd, message, wParam, lParam );
	}
	return 0;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ