ini ファイルよりメニューデータを読込んでメニュー作成 |
|
|
// ------------------------------------------------------------------
// ini ファイル読込
// ------------------------------------------------------------------
GetIniFileName( buffer, _MAX_PATH );
int left,top,right,bottom;
left = GetPrivateProfileInt("Window", "Left", 0, buffer );
top = GetPrivateProfileInt("Window", "Top", 0, buffer );
right = GetPrivateProfileInt("Window", "Right", 0, buffer );
bottom = GetPrivateProfileInt("Window", "Bottom", 0, buffer );
MoveWindow( hWnd, left, top, right-left, bottom-top, false );
// ------------------------------------------------------------------
// ツールメニュー作成
// ------------------------------------------------------------------
hMenu = GetMenu( hWnd ); // メインのメニューハンドルを取得
GetPrivateProfileString("ToolMenu", "1", "NOTHING", work, 80, buffer ); // iniファイル
if ( lstrcmp( work, "NOTHING" ) != 0 ) { // ツールメニューデータがある場合
hMenuPopup = CreatePopupMenu(); // ポップアップメニュー作成
int i = 1000; // ツールメニュー項目IDオフセット
char count[10]; // メニューエントリ文字列用
char *ptr,*ptr2; // メニューデータ分解時の先頭アドレス
ptr = strtok( work, "," ); // メニューデータ分解
ptr2 = strtok( NULL, "," ); // メニューデータ分解
lstrcpy( ToolAction[i-1000], ptr2 ); // 実行ファイル文字列
AppendMenu( hMenuPopup, MF_ENABLED, IDM_OPENFILE+i, ptr ); // メニュー項目追加
while( 1 ) {
sprintf( count, "%d", i-998 );
GetPrivateProfileString("ToolMenu", count, "NOTHING", work, 80, buffer );
if ( lstrcmp( work, "NOTHING" ) == 0 ) {
break;
}
i++;
if ( i > 2009 ) {
break;
}
ptr = strtok( work, "," );
ptr2 = strtok( NULL, "," );
lstrcpy( ToolAction[i-1000], ptr2 );
AppendMenu( hMenuPopup, MF_ENABLED, IDM_OPENFILE+i, work );
}
MENUITEMINFO mii;
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_SUBMENU;
mii.fType = MFT_STRING;
mii.fState = MF_ENABLED;
mii.wID = IDM_OPENFILE+999;
mii.hSubMenu = hMenuPopup;
mii.dwTypeData = "ツール(&T)";
InsertMenuItem(hMenu, 2, TRUE, &mii); // ポップアップメニュー追加
}
buffer[0] = 0x00;
| |
|
|
|
|
case WM_DESTROY:
if ( !IsIconic( hWnd ) && !IsZoomed( hWnd ) ) {
GetWindowRect(hWnd, &rt);
GetIniFileName( buffer, _MAX_PATH );
sprintf( work, "%d", rt.left );
WritePrivateProfileString("Window", "Left", work, buffer );
sprintf( work, "%d", rt.top );
WritePrivateProfileString("Window", "Top", work, buffer );
sprintf( work, "%d", rt.right );
WritePrivateProfileString("Window", "Right", work, buffer );
sprintf( work, "%d", rt.bottom );
WritePrivateProfileString("Window", "Bottom", work, buffer );
}
if ( hMenuPopup != NULL ) {
DestroyMenu( hMenuPopup ); // ポップアップメニュー削除
}
PostQuitMessage( 0 );
break;
| |
|
|
|
|
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// ------------------------------------------------------------------
// ツールの起動
// ------------------------------------------------------------------
for ( i = 0; i < 10; i++ ) {
if ( IDM_OPENFILE+i+1000 == wmId ) {
ZeroMemory( &pi , sizeof(PROCESS_INFORMATION));
ZeroMemory( &si , sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
CreateProcess( NULL, ToolAction[i], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
return 0;
}
}
| |
|
|
|