|
|
case WM_CREATE:
CreateMutex(
NULL,
false,
"MyMutex"
);
Win = new LboxWin( hWnd );
Win->StatusCreate( 0 );
Lview = new LboxListview(
hWnd,
LBOX_LISTVIEW_CREATE
);
Lview->Grid( );
Lview->SetFont( 0, 10, false );
Lview->AddColumn( "パス" );
Lview->Fit();
Lview2 = new LboxListview(
hWnd,
LBOX_LISTVIEW_CREATE
);
Lview2->Grid( );
Lview2->SetFont( 0, 10, false );
Lview2->AddColumn( "" );
Lview2->AddColumn( "テキスト" );
Lview2->AddColumn( "ファイル名" );
Lview2->Fit();
break;
| |
|
|
|
|
void StringSearch( LboxString *Path, LboxString *Target )
{
LboxTextFile Txt;
LboxString Buffer;
Buffer.Resize( 10000 );
int nRow;
if ( !(Txt.ReadOpen( Path )) ) {
return;
}
nRow = 0;
while( Txt.Get( &Buffer ) ) {
nRow++;
if ( Buffer.Search( Target ) ) {
HANDLE hMutex;
hMutex = OpenMutex( SYNCHRONIZE, false, "MyMutex" );
if ( hMutex != NULL ) {
WaitForSingleObject( hMutex, INFINITE );
Lview2->AddRow();
Lview2->SetColumnPrintf( 0, "%lu", nRow );
Lview2->SetColumnText( 1, &Buffer );
Lview2->SetColumnText( 2, Path );
ReleaseMutex( hMutex );
CloseHandle( hMutex );
}
}
}
Txt.Close();
}
| |
|
|
|
|
case LBOX_LV_DBLCLK:
if ( Lview2->IsHandle( (HWND)wParam ) ) {
// 行が選択されている
if ( LVROW(lParam) != -1 ) {
LboxString TargetFile;
LboxString TargetRow;
HANDLE hMutex;
hMutex = OpenMutex(
SYNCHRONIZE, false, "MyMutex" );
if ( hMutex != NULL ) {
WaitForSingleObject( hMutex, INFINITE );
Lview2->SetCurrentRow( LVROW(lParam) );
Lview2->GetColumnText( 2, &TargetFile );
Lview2->GetColumnText( 0, &TargetRow );
ReleaseMutex( hMutex );
CloseHandle( hMutex );
LboxTool Tool;
LboxString Command;
Command.Printf( "\"%s\" /jl=%s \"%s\"",
"C:\\Program Files\\tpad\\TeraPad.exe",
TargetRow.szLboxString,
TargetFile.szLboxString
);
Tool.Execute( &Command, NULL );
}
}
}
break;
| |
|
※ 厳密には、リストビューオブジェクトの内部処理が考慮されていないので (イベント処理等)
Lview3 を作成して使用する必要があります
|
Lview3 = new LboxListview();
Lview3->hWnd = Lview2->hWnd;
| |
|
|
|