|
|
// *********************************************************
// ワークリストボックスの作成
// 戻り値 : 作成されたリストボックスのウインドウハンドル
// *********************************************************
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
);
}
| |
|
|
|
|
// *********************************************************
// 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 );
}
| |
|
|
|