特殊なグローバル関数

  データ処理用非表示ワークリストボックスの作成



  
// *********************************************************
// ワークリストボックスの作成
// 戻り値 : 作成されたリストボックスのウインドウハンドル
// *********************************************************
HWND LboxCreateWorkbox( HWND hWnd )
{
	HWND hRet;

	hRet = CreateWindow(
		"listbox",
		NULL,
		WS_CHILD,
		0,0,0,0,
		hWnd,
		(HMENU)0,
		NULL,
		NULL
	);

	return hRet;
}
  





  標準的な非表示エディットコントロールの作成



  
// *********************************************************
// エディットコントロールの作成
// 戻り値 : 作成されたエディットコントロールのウインドウハンドル
// *********************************************************
HWND LboxCreateEdit( HWND hWnd, DWORD id )
{
	HWND hRet;

	hRet = CreateWindow(
		"edit",
		NULL,
		WS_CHILD | ES_AUTOHSCROLL | WS_BORDER,
		0,0,0,0,
		hWnd,
		(HMENU)id,
		LboxGetInstance( hWnd ),
		NULL
	);

	return hRet;
}
  



  クリップボードへテキストをコピー

  
// *********************************************************
// クリップボードへテキストをコピー
// 戻り値 : 成功 true, 失敗 false
// *********************************************************
BOOL LboxCopyClipboard( LPTSTR szData )
{
	HGLOBAL hGlobal;
	LPTSTR pMem;

	hGlobal = GlobalAlloc(GHND, lstrlen( szData ) + 128 );
	if ( hGlobal == NULL ) {
		return false;
	}
	pMem = (LPTSTR)GlobalLock( hGlobal );
	if ( pMem == NULL ) {
		GlobalFree( hGlobal );
		return false;
	}
	lstrcpy( pMem, szData );
	GlobalUnlock( hGlobal );
	OpenClipboard( NULL );
	EmptyClipboard();
	SetClipboardData(CF_TEXT, hGlobal);
	CloseClipboard();

	return true;
}
  



  実行中のプログラムのフルパス

  
// *********************************************************
// 実行中のプログラムのフルパスを取得する
// 戻り値 : 無し
// パスは二重引用符で挟まれません
// *********************************************************
void LboxGetProgramPath( LPTSTR szPath )
{
	char *szBuffer = new char[MAX_PATH*3];
	char *ptr,*pStart,*pEnd;

	ptr = GetCommandLine();
	CopyMemory( szBuffer, ptr, MAX_PATH*3 );
	ptr = szBuffer;
	
	if ( *ptr == '"' ) {
		pStart = ptr+1;
		pEnd = pStart+1;
		while( 1 ) {
			if ( *pEnd == '"' || *pEnd == 0x00 ) {
				*pEnd = 0x00;
				break;
			}
			pEnd++;
		}
	}
	else {
		pStart = ptr;
		pEnd = pStart+1;
		while( 1 ) {
			if ( *pEnd == ' ' || *pEnd == 0x00 ) {
				*pEnd = 0x00;
				break;
			}
			pEnd++;
		}
	}

	lstrcpy( szPath, pStart );

	delete [] szBuffer;
}
  



  プログラムの外部実行

  
// *********************************************************
// 外部プログラムの実行
// 戻り値 : true 成功, false 失敗
// szCurDirectory が必要無い場合は NULL を指定する
// *********************************************************
BOOL LboxExecute( LPTSTR szCommand, LPTSTR szCurDirectory )
{
	PROCESS_INFORMATION	pi;
	STARTUPINFO		si;

	ZeroMemory( &pi , sizeof(PROCESS_INFORMATION)); 
	ZeroMemory( &si , sizeof(STARTUPINFO));
	si.cb		= sizeof(STARTUPINFO);
	si.dwFlags	= STARTF_USESHOWWINDOW;
	si.wShowWindow	= SW_SHOWNORMAL;

	return CreateProcess(
		NULL,
		szCommand,
		NULL,
		NULL,
		FALSE,
		0,
		NULL,
		szCurDirectory,
		&si,
		&pi
	);
}
  



  フォント作成

  
// *********************************************************
// フォント作成
// 戻り値 : フォントハンドル
// nType
// 0 : MS Pゴシック
// 1 : MS P明朝
// 2 : MS ゴシック
// 3 : MS 明朝
// サイズ : 8 〜 18
// *********************************************************
HFONT LboxCreateFont( int nType, int nSize, BOOL bBold )
{
	HFONT hFont;

	if ( nSize < 8 || nSize > 18 ) {
		return NULL;
	}

	LboxFontbase.lfHeight = LboxFontSize[nSize];
	if ( bBold ) {
		LboxFontbase.lfWeight = 700;
	}
	else {
		LboxFontbase.lfWeight = 400;
	}

	switch( nType ) {
		case 0:
			lstrcpy( LboxFontbase.lfFaceName, "MS Pゴシック" );
			break;
		case 1:
			lstrcpy( LboxFontbase.lfFaceName, "MS P明朝" );
			break;
		case 2:
			lstrcpy( LboxFontbase.lfFaceName, "MS ゴシック" );
			break;
		case 3:
			lstrcpy( LboxFontbase.lfFaceName, "MS 明朝" );
			break;
		default:
			return NULL;
	}

	hFont = CreateFontIndirect( &LboxFontbase );

	return hFont;
}
  



  ウインドウのスタイル追加・削除

  
// *********************************************************
// ウインドウのスタイル追加
// 戻り値 : 無し
// *********************************************************
void LboxAddWindowStyle( HWND hWnd, DWORD dwStyle )
{
	DWORD dwWork;

	dwWork = LboxGetWindowStyle( hWnd );
	dwWork = dwWork | dwStyle;
	SetWindowLong(
		hWnd,
		GWL_STYLE,
		dwWork
	);
}

// *********************************************************
// ウインドウのスタイル削除
// 戻り値 : 無し
// *********************************************************
void LboxRemoveWindowStyle( HWND hWnd, DWORD dwStyle )
{
	DWORD dwWork;

	dwWork = LboxGetWindowStyle( hWnd );
	dwWork = dwWork & ( dwStyle ^ 0xffffffff );
	SetWindowLong(
		hWnd,
		GWL_STYLE,
		dwWork
	);
}
  



  LboxOnlyDialog

  
// *********************************************************
// WM_CREATE に書くダイアログのみのアプリケーション用
// 戻り値 : -1
// *********************************************************
LRESULT LboxOnlyDialog( HWND hWnd, LPCTSTR lpTemplate, DLGPROC lpFunc )
{
	ShowWindow( hWnd, SW_SHOWMINIMIZED );
	DialogBox(
		LboxGetInstance( hWnd ),
		lpTemplate,
		hWnd,
		lpFunc
	);
	return (LRESULT)(-1);
}
  



  実行中のプログラムが存在するディレクトリ

  
// *********************************************************
// 実行中のプログラムが存在するディレクトリ
// 戻り値 : 無し
// パスは二重引用符で挟まれません
// *********************************************************
void LboxGetProgramDirectory( LPTSTR szDirectory )
{
	LboxGetProgramPath( szDirectory );
	PathRemoveFileSpec( szDirectory );
}
  



  実行中のプログラムファイル名( パス無し )

  
// *********************************************************
// 実行中のプログラムファイル名( パス無し )
// 戻り値 : 無し
// パスは二重引用符で挟まれません
// *********************************************************
void LboxGetProgramFileName( LPTSTR szFileName )
{
	LboxGetProgramPath( szFileName );
	PathStripPath( szFileName );
}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ