static LRESULT CALLBACK TreeProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_CREATE: globals.hTree = CreateWindowW(WC_TREEVIEWW, NULL, WS_CHILD|WS_VISIBLE|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT, 0, 0, 0, 0, hWnd, (HMENU)TREE_WINDOW, globals.hMainInst, NULL); AddTreeEx(); break; case WM_NOTIFY: if((int)wParam != TREE_WINDOW) break; switch(((LPNMHDR)lParam)->code) { case TVN_ITEMEXPANDINGW: CreateInst(((NMTREEVIEWW *)lParam)->itemNew.hItem, NULL); break; case TVN_SELCHANGEDW: RefreshMenu(((NMTREEVIEWW *)lParam)->itemNew.hItem); RefreshDetails(((NMTREEVIEWW *)lParam)->itemNew.hItem); break; } break; case WM_SIZE: MoveWindow(globals.hTree, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; default: return DefWindowProcW(hWnd, uMsg, wParam, lParam); } return 0; }
void CScriptEdit::OnToolsLookupstrref() { CStrRefDlg dlg; dlg.DoModal(); RefreshMenu(); }
void CScriptEdit::OnOptionsLargeindent() { editflg^=INDENT; if(editflg&INDENT) m_indent=2; else m_indent=4; RefreshMenu(); }
void RefreshNavigMenu( intf_thread_t *p_intf, HMENU hMenu ) { #define MAX_NAVIG_ITEMS 10 vlc_object_t *p_object; char *ppsz_varnames[MAX_NAVIG_ITEMS]; vlc_object_t * pi_objects[MAX_NAVIG_ITEMS]; int i; /* Delete old menu */ int count = wce_GetMenuItemCount( hMenu ); for( i = 0; i <= count; i++ ) RemoveMenu( hMenu, 0, MF_BYPOSITION ); if( p_intf->p_sys->p_navig_menu ) MenuItemExt::ClearList( p_intf->p_sys->p_navig_menu ); else p_intf->p_sys->p_navig_menu = new vector<MenuItemExt*>; /* Initializations */ memset( pi_objects, 0, MAX_NAVIG_ITEMS * sizeof(vlc_object_t *) ); i = 0; p_object = (vlc_object_t *) vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "title"; pi_objects[i++] = p_object; ppsz_varnames[i] = "chapter"; pi_objects[i++] = p_object; ppsz_varnames[i] = "program"; pi_objects[i++] = p_object; ppsz_varnames[i] = "navigation"; pi_objects[i++] = p_object; ppsz_varnames[i] = "dvd_menus"; pi_objects[i++] = p_object; ppsz_varnames[i] = "prev-title"; pi_objects[i++] = p_object; ppsz_varnames[i] = "next-title"; pi_objects[i++] = p_object; ppsz_varnames[i] = "prev-chapter"; pi_objects[i++] = p_object; ppsz_varnames[i] = "next-chapter"; pi_objects[i++] = p_object; vlc_object_release( p_object ); } /* Build menu */ RefreshMenu( p_intf, p_intf->p_sys->p_navig_menu, hMenu, i, ppsz_varnames, pi_objects, NavigMenu_Events ); }
/*! * \brief Constructor for CategoryMenu * \details This menu populates itself with Categories found in message with * preferences. If this parameter is NULL, empty menu is created. * \param[in] name Name of the menu * \param[in] preferences Message with all preferences. It is parsed, and categories' * info is used to populate the menu with categories. */ CategoryMenu::CategoryMenu( const char *name, bool withSeparator, BMessage* templateMessage, BMessage* preferences ) : BMenu( name, B_ITEMS_IN_COLUMN ), bWithSeparator( withSeparator ), fTemplateMessage( templateMessage ) { RefreshMenu( preferences ); // Populate the menu. BMenuItem* defaultItem = NULL; if ( withSeparator ) { BSeparatorItem* separator = new BSeparatorItem(); if ( !separator ) { /* Panic! */ exit( 1 ); } defaultItem = ( BMenuItem* )this->FindItem( "Default" ); if ( NULL == defaultItem ) { BMenu::AddItem( separator, 1 ); } else { int i = 0; while ( defaultItem != ( BMenuItem* )this->ItemAt( i ) ) { ++i; } BMenu::AddItem( separator, ++i ); } this->SetLabelFromMarked( false ); this->SetRadioMode( false ); } else { CategoryMenuItem* defaultItem = ( CategoryMenuItem* )this->FindItem( "Default" ); if ( defaultItem ) { defaultItem->SetMarked( true ); } else if ( this->CountItems() > 0 ) { ( this->ItemAt( 0 ) )->SetMarked( true ); } this->SetRadioMode( true ); this->SetLabelFromMarked( true ); } } // <-- end of constructor for CategoryMenu
BOOL CScriptEdit::OnInitDialog() { CFont Font; CString tmpstr,tmpstr1,tmpstr2; the_ids.new_ids(); m_idsname=""; if(editflg&INDENT) m_indent=2; else m_indent=4; CDialog::OnInitDialog(); m_text_control.LimitText(MAX_SCRIPT_LEN); m_text_control.ModifyStyle(0,ES_SAVESEL); m_text_control.SetOptions(ECOOP_OR,ECO_AUTOWORDSELECTION|ECO_SAVESEL|ECO_WANTRETURN|ECO_NOHIDESEL); //enables the update event for a rich edit control m_text_control.SetEventMask(ENM_CHANGE|ENM_UPDATE|ENM_MOUSEEVENTS|ENM_KEYEVENTS|ENM_SCROLL|ENM_SELCHANGE); Font.CreateFont(15,0,0,0,0,0,0,0,0,0,0,0,0,"Courier New"); m_text_control.SetFont(&Font); Font.DeleteObject(); // UpdateData(UD_DISPLAY); CheckScript(WHOLE_CHECK|FORCED_CHECK); RefreshDialog(); RefreshMenu(); m_infind=0; //tooltips { m_tooltip.Create(this,TTS_NOPREFIX); m_tooltip.SetMaxTipWidth(200); m_tooltip.SetTipBkColor(RGB(240,224,160)); m_tooltip.AddTool(GetDlgItem(IDCANCEL), IDS_CANCEL); tmpstr1.LoadString(IDS_LOAD); tmpstr2.LoadString(IDS_SCRIPT); tmpstr.Format(tmpstr1, tmpstr2); m_tooltip.AddTool(GetDlgItem(IDC_LOAD), tmpstr); tmpstr1.LoadString(IDS_LOADEX); tmpstr.Format(tmpstr1, tmpstr2); m_tooltip.AddTool(GetDlgItem(IDC_LOADEX), tmpstr); tmpstr1.LoadString(IDS_SAVE); tmpstr.Format(tmpstr1, tmpstr2); m_tooltip.AddTool(GetDlgItem(IDC_SAVEAS), tmpstr); tmpstr1.LoadString(IDS_NEW); tmpstr.Format(tmpstr1, tmpstr2); m_tooltip.AddTool(GetDlgItem(IDC_NEW), tmpstr); tmpstr1.LoadString(IDS_CHECK); tmpstr.Format(tmpstr1, tmpstr2); m_tooltip.AddTool(GetDlgItem(IDC_CHECK), tmpstr); } return TRUE; }
void RefreshAudioMenu( intf_thread_t *p_intf, HMENU hMenu ) { #define MAX_AUDIO_ITEMS 10 vlc_object_t *p_object; char *ppsz_varnames[MAX_AUDIO_ITEMS]; vlc_object_t * pi_objects[MAX_AUDIO_ITEMS]; int i; /* Delete old menu */ int count = wce_GetMenuItemCount( hMenu ); for( i = 0; i <= count; i++ ) RemoveMenu( hMenu, 0, MF_BYPOSITION ); if( p_intf->p_sys->p_audio_menu ) MenuItemExt::ClearList( p_intf->p_sys->p_audio_menu ); else p_intf->p_sys->p_audio_menu = new vector<MenuItemExt*>; /* Initializations */ memset( pi_objects, 0, MAX_AUDIO_ITEMS * sizeof(vlc_object_t *) ); i = 0; p_object = (vlc_object_t *) vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "audio-es"; pi_objects[i++] = p_object; vlc_object_release( p_object ); } p_object = (vlc_object_t *) vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "audio-device"; pi_objects[i++] = p_object; ppsz_varnames[i] = "audio-channels"; pi_objects[i++] = p_object; ppsz_varnames[i] = "visual"; pi_objects[i++] = p_object; vlc_object_release( p_object ); } /* Build menu */ RefreshMenu( p_intf, p_intf->p_sys->p_audio_menu, hMenu, i, ppsz_varnames, pi_objects, AudioMenu_Events ); }
void RefreshSettingsMenu( intf_thread_t *p_intf, HMENU hMenu ) { #define MAX_SETTINGS_ITEMS 10 vlc_object_t *p_object; char *ppsz_varnames[MAX_SETTINGS_ITEMS]; vlc_object_t * pi_objects[MAX_SETTINGS_ITEMS]; int i; /* Delete old menu */ int count = wce_GetMenuItemCount( hMenu ); for( i = 0; i <= count; i++ ) RemoveMenu( hMenu, 0, MF_BYPOSITION ); if( p_intf->p_sys->p_settings_menu ) MenuItemExt::ClearList( p_intf->p_sys->p_settings_menu ); else p_intf->p_sys->p_settings_menu = new vector<MenuItemExt*>; /* Initializations */ memset( pi_objects, 0, MAX_SETTINGS_ITEMS * sizeof(vlc_object_t *) ); i = 0; AppendMenu( hMenu, MF_STRING, ID_PREFERENCES, _T("&Preferences...") ); /* Other interfaces */ /*FIXME: copy the Qt way of mapping menus and objects */ /*p_object = (vlc_object_t *) NULL; //vlc_object_find_name( p_intf, "wince", FIND_PARENT ); if( p_object != NULL ) { ppsz_varnames[i] = "intf-add"; pi_objects[i++] = p_object; vlc_object_release( p_object ); }*/ /* Build menu */ RefreshMenu( p_intf, p_intf->p_sys->p_settings_menu, hMenu, i, ppsz_varnames, pi_objects, SettingsMenu_Events ); }
void CScriptEdit::OnOptionsLogging() { weiduflg^=WEI_LOGGING; RefreshMenu(); }
void CScriptEdit::OnOptionsUseinternalcompiler() { editflg^=INTERNALCOMPILER; RefreshMenu(); }
void CScriptEdit::OnOptionsUseinternaldecompiler() { editflg^=INTERNALDECOMP; RefreshMenu(); }
void CScriptEdit::OnOptionsAutocheck() { editflg^=NOCHECK; RefreshMenu(); }
void CreateInst(HTREEITEM item, WCHAR *wszMachineName) { TVITEMW tvi; HTREEITEM hCur; TVINSERTSTRUCTW tvis; WCHAR wszTitle[MAX_LOAD_STRING]; WCHAR wszMessage[MAX_LOAD_STRING]; WCHAR wszFlagName[MAX_LOAD_STRING]; WCHAR wszTreeName[MAX_LOAD_STRING]; WCHAR wszRegPath[MAX_LOAD_STRING]; const WCHAR wszFormat[] = { '\n','%','s',' ','(','$','%','x',')','\n','\0' }; CLSID clsid; COSERVERINFO remoteInfo; MULTI_QI qi; IUnknown *obj, *unk; HRESULT hRes; memset(&tvi, 0, sizeof(TVITEMW)); tvi.mask = TVIF_TEXT; tvi.hItem = item; tvi.cchTextMax = MAX_LOAD_STRING; tvi.pszText = wszTreeName; memset(&tvis, 0, sizeof(TVINSERTSTRUCTW)); U(tvis).item.mask = TVIF_TEXT|TVIF_PARAM; U(tvis).item.cchTextMax = MAX_LOAD_STRING; tvis.hInsertAfter = TVI_FIRST; U(tvis).item.pszText = tvi.pszText; tvis.hParent = item; tvis.hInsertAfter = TVI_LAST; if (!SendMessageW(globals.hTree, TVM_GETITEMW, 0, (LPARAM)&tvi)) return; if(!tvi.lParam || ((ITEM_INFO *)tvi.lParam)->loaded || !(((ITEM_INFO *)tvi.lParam)->cFlag&SHOWALL)) return; if(FAILED(CLSIDFromString(((ITEM_INFO *)tvi.lParam)->clsid, &clsid))) return; if(wszMachineName) { remoteInfo.dwReserved1 = 0; remoteInfo.dwReserved2 = 0; remoteInfo.pAuthInfo = NULL; remoteInfo.pwszName = wszMachineName; qi.pIID = &IID_IUnknown; CoCreateInstanceEx(&clsid, NULL, globals.dwClsCtx|CLSCTX_REMOTE_SERVER, &remoteInfo, 1, &qi); hRes = qi.hr; obj = qi.pItf; } else hRes = CoCreateInstance(&clsid, NULL, globals.dwClsCtx, &IID_IUnknown, (void **)&obj); if(FAILED(hRes)) { LoadStringW(globals.hMainInst, IDS_CGCOFAIL, wszMessage, sizeof(wszMessage)/sizeof(wszMessage[0])); LoadStringW(globals.hMainInst, IDS_ABOUT, wszTitle, sizeof(wszTitle)/sizeof(wszTitle[0])); #define CASE_ERR(i) case i: \ MultiByteToWideChar(CP_ACP, 0, #i, -1, wszFlagName, MAX_LOAD_STRING); \ break switch(hRes) { CASE_ERR(REGDB_E_CLASSNOTREG); CASE_ERR(E_NOINTERFACE); CASE_ERR(REGDB_E_READREGDB); CASE_ERR(REGDB_E_KEYMISSING); CASE_ERR(CO_E_DLLNOTFOUND); CASE_ERR(CO_E_APPNOTFOUND); CASE_ERR(E_ACCESSDENIED); CASE_ERR(CO_E_ERRORINDLL); CASE_ERR(CO_E_APPDIDNTREG); CASE_ERR(CLASS_E_CLASSNOTAVAILABLE); default: LoadStringW(globals.hMainInst, IDS_ERROR_UNKN, wszFlagName, sizeof(wszFlagName)/sizeof(wszFlagName[0])); } wsprintfW(&wszMessage[lstrlenW(wszMessage)], wszFormat, wszFlagName, (unsigned)hRes); MessageBoxW(globals.hMainWnd, wszMessage, wszTitle, MB_OK|MB_ICONEXCLAMATION); return; } ((ITEM_INFO *)tvi.lParam)->loaded = 1; ((ITEM_INFO *)tvi.lParam)->pU = obj; tvi.mask = TVIF_STATE; tvi.state = TVIS_BOLD; tvi.stateMask = TVIS_BOLD; SendMessageW(globals.hTree, TVM_SETITEMW, 0, (LPARAM)&tvi); tvi.mask = TVIF_TEXT; hCur = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)tree.hI); while(hCur) { tvi.hItem = hCur; if(!SendMessageW(globals.hTree, TVM_GETITEMW, 0, (LPARAM)&tvi) || !tvi.lParam) { hCur = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hCur); continue; } CLSIDFromString(((ITEM_INFO *)tvi.lParam)->clsid, &clsid); hRes = IUnknown_QueryInterface(obj, &clsid, (void *)&unk); if(SUCCEEDED(hRes)) { IUnknown_Release(unk); lstrcpyW(wszRegPath, wszInterface); lstrcpyW(&wszRegPath[lstrlenW(wszRegPath)], ((ITEM_INFO *)tvi.lParam)->clsid); U(tvis).item.lParam = CreateITEM_INFO(REGTOP|INTERFACE|REGPATH, wszRegPath, ((ITEM_INFO *)tvi.lParam)->clsid, NULL); SendMessageW(globals.hTree, TVM_INSERTITEMW, 0, (LPARAM)&tvis); } hCur = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hCur); } RefreshMenu(item); RefreshDetails(item); }
void PopupMenu( intf_thread_t *p_intf, HWND p_parent, POINT point ) { #define MAX_POPUP_ITEMS 45 vlc_object_t *p_object, *p_input; char *ppsz_varnames[MAX_POPUP_ITEMS]; vlc_object_t * pi_objects[MAX_POPUP_ITEMS]; int i = 0, i_last_separator = 0; /* Initializations */ memset( pi_objects, 0, MAX_POPUP_ITEMS * sizeof(vlc_object_t *) ); ppsz_varnames[i] = "VLC media player"; pi_objects[i++] = 0; ppsz_varnames[i++] = NULL; /* Separator */ i_last_separator = i; /* Input menu */ p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "bookmark"; pi_objects[i++] = p_object; ppsz_varnames[i] = "title"; pi_objects[i++] = p_object; ppsz_varnames[i] = "chapter"; pi_objects[i++] = p_object; ppsz_varnames[i] = "program"; pi_objects[i++] = p_object; ppsz_varnames[i] = "navigation"; pi_objects[i++] = p_object; ppsz_varnames[i] = "dvd_menus"; pi_objects[i++] = p_object; ppsz_varnames[i] = "video-es"; pi_objects[i++] = p_object; ppsz_varnames[i] = "audio-es"; pi_objects[i++] = p_object; ppsz_varnames[i] = "spu-es"; pi_objects[i++] = p_object; } p_input = p_object; if( !p_input ) goto interfacemenu; /* Video menu */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */ i_last_separator = i; p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); if( p_object != NULL ) { vlc_object_t *p_dec_obj; ppsz_varnames[i] = "fullscreen"; pi_objects[i++] = p_object; ppsz_varnames[i] = "zoom"; pi_objects[i++] = p_object; ppsz_varnames[i] = "deinterlace-mode"; pi_objects[i++] = p_object; ppsz_varnames[i] = "aspect-ratio"; pi_objects[i++] = p_object; ppsz_varnames[i] = "crop"; pi_objects[i++] = p_object; ppsz_varnames[i] = "video-on-top"; pi_objects[i++] = p_object; ppsz_varnames[i] = "directx-wallpaper"; pi_objects[i++] = p_object; ppsz_varnames[i] = "video-snapshot"; pi_objects[i++] = p_object; p_dec_obj = (vlc_object_t *)vlc_object_find( p_object, VLC_OBJECT_DECODER, FIND_PARENT ); if( p_dec_obj != NULL ) { ppsz_varnames[i] = "ffmpeg-pp-q"; pi_objects[i++] = p_dec_obj; vlc_object_release( p_dec_obj ); } vlc_object_release( p_object ); } /* Audio menu */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */ i_last_separator = i; p_object = (vlc_object_t *)vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "audio-device"; pi_objects[i++] = p_object; ppsz_varnames[i] = "audio-channels"; pi_objects[i++] = p_object; ppsz_varnames[i] = "visual"; pi_objects[i++] = p_object; ppsz_varnames[i] = "equalizer"; pi_objects[i++] = p_object; vlc_object_release( p_object ); } interfacemenu: /* Interface menu */ if( i != i_last_separator ) ppsz_varnames[i++] = NULL; /* Separator */ i_last_separator = i; /* Build menu */ vector<MenuItemExt*> popup_menu; HMENU hmenu = CreatePopupMenu(); RefreshMenu( p_intf, &popup_menu, hmenu, i, ppsz_varnames, pi_objects, PopupMenu_Events ); MenuItemExt::ClearList( &popup_menu ); /* Add static entries */ if( p_input != NULL ) { vlc_value_t val; AppendMenu( hmenu, MF_SEPARATOR, 0, _T("") ); AppendMenu( hmenu, MF_STRING, StopStream_Event, _T("Stop") ); AppendMenu( hmenu, MF_STRING, PrevStream_Event, _T("Previous") ); AppendMenu( hmenu, MF_STRING, NextStream_Event, _T("Next") ); var_Get( p_input, "state", &val ); if( val.i_int == PAUSE_S ) AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Play") ); else AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Pause") ); vlc_object_release( p_input ); } else { playlist_t * p_playlist = pl_Hold( p_intf ); if( p_playlist && !playlist_IsEmpty( p_playlist ) ) { AppendMenu( hmenu, MF_SEPARATOR, 0, _T("") ); AppendMenu( hmenu, MF_STRING, PlayStream_Event, _T("Play") ); } if( p_playlist ) pl_Release( p_intf ); } AppendMenu( hmenu, MF_POPUP|MF_STRING, (UINT)MiscMenu( p_intf ), _T("Miscellaneous") ); AppendMenu( hmenu, MF_POPUP|MF_STRING, (UINT)OpenStreamMenu( p_intf ), _T("Open") ); TrackPopupMenu( hmenu, 0, point.x, point.y, 0, p_parent, 0 ); PostMessage( p_parent, WM_NULL, 0, 0 ); DestroyMenu( hmenu ); }
void RefreshVideoMenu( intf_thread_t *p_intf, HMENU hMenu ) { #define MAX_VIDEO_ITEMS 15 vlc_object_t *p_object; char *ppsz_varnames[MAX_VIDEO_ITEMS]; vlc_object_t * pi_objects[MAX_VIDEO_ITEMS]; int i; /* Delete old menu */ int count = wce_GetMenuItemCount( hMenu ); for( i = 0; i <= count; i++ ) RemoveMenu( hMenu, 0, MF_BYPOSITION ); if( p_intf->p_sys->p_video_menu ) MenuItemExt::ClearList( p_intf->p_sys->p_video_menu ); else p_intf->p_sys->p_video_menu = new vector<MenuItemExt*>; /* Initializations */ memset( pi_objects, 0, MAX_VIDEO_ITEMS * sizeof(vlc_object_t *) ); i = 0; p_object = (vlc_object_t *) vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( p_object != NULL ) { ppsz_varnames[i] = "video-es"; pi_objects[i++] = p_object; ppsz_varnames[i] = "spu-es"; pi_objects[i++] = p_object; vlc_object_release( p_object ); } p_object = (vlc_object_t *) vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); if( p_object != NULL ) { vlc_object_t *p_dec_obj; ppsz_varnames[i] = "fullscreen"; pi_objects[i++] = p_object; #ifdef WINCE ppsz_varnames[i] = "transform"; pi_objects[i++] = p_object; #endif ppsz_varnames[i] = "zoom"; pi_objects[i++] = p_object; ppsz_varnames[i] = "deinterlace-mode"; pi_objects[i++] = p_object; ppsz_varnames[i] = "aspect-ratio"; pi_objects[i++] = p_object; ppsz_varnames[i] = "crop"; pi_objects[i++] = p_object; ppsz_varnames[i] = "directx-on-top"; pi_objects[i++] = p_object; p_dec_obj = (vlc_object_t *) vlc_object_find( p_object, VLC_OBJECT_DECODER, FIND_PARENT ); if( p_dec_obj != NULL ) { ppsz_varnames[i] = "ffmpeg-pp-q"; pi_objects[i++] = p_dec_obj; vlc_object_release( p_dec_obj ); } vlc_object_release( p_object ); } /* Build menu */ RefreshMenu( p_intf, p_intf->p_sys->p_video_menu, hMenu, i, ppsz_varnames, pi_objects, VideoMenu_Events ); }
static int MenuCommand(WPARAM wParam, HWND hWnd) { BOOL vis; HTREEITEM hSelect; WCHAR wszAbout[MAX_LOAD_STRING]; WCHAR wszAboutVer[MAX_LOAD_STRING]; switch(wParam) { case IDM_ABOUT: LoadStringW(globals.hMainInst, IDS_ABOUT, wszAbout, sizeof(wszAbout)/sizeof(wszAbout[0])); LoadStringW(globals.hMainInst, IDS_ABOUTVER, wszAboutVer, sizeof(wszAboutVer)/sizeof(wszAboutVer[0])); ShellAboutW(hWnd, wszAbout, wszAboutVer, NULL); break; case IDM_COPYCLSID: hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); CopyClsid(hSelect); break; case IDM_HTMLTAG: hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); CopyHTMLTag(hSelect); break; case IDM_CREATEINST: hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); CreateInst(hSelect, NULL); SendMessageW(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_CREATEINSTON: if(DialogBoxW(0, MAKEINTRESOURCEW(DLG_CREATEINSTON), hWnd, CreateInstOnProc) == IDCANCEL) break; hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); CreateInst(hSelect, globals.wszMachineName); SendMessageW(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_RELEASEINST: hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); ReleaseInst(hSelect); RefreshMenu(hSelect); RefreshDetails(hSelect); break; case IDM_EXPERT: globals.bExpert = !globals.bExpert; CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), globals.bExpert ? MF_CHECKED : MF_UNCHECKED); EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)TVI_ROOT); SendMessageW(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_FLAG_INSERV: vis = globals.dwClsCtx&CLSCTX_INPROC_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_INHANDL: vis = globals.dwClsCtx&CLSCTX_INPROC_HANDLER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_HANDLER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_HANDLER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_LOCSERV: vis = globals.dwClsCtx&CLSCTX_LOCAL_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_LOCAL_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_LOCAL_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_REMSERV: vis = globals.dwClsCtx&CLSCTX_REMOTE_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_REMOTE_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_REMOTE_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_REFRESH: EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)TVI_ROOT); SendMessageW(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_REGEDIT: { STARTUPINFOW si; PROCESS_INFORMATION pi; WCHAR app[MAX_PATH]; GetWindowsDirectoryW( app, MAX_PATH - sizeof(wszRegEdit)/sizeof(WCHAR) ); lstrcatW( app, wszRegEdit ); memset(&si, 0, sizeof(si)); si.cb = sizeof(si); if (CreateProcessW(app, app, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } break; } case IDM_STATUSBAR: vis = IsWindowVisible(globals.hStatusBar); ShowWindow(globals.hStatusBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_SYSCONF: DialogBoxW(0, MAKEINTRESOURCEW(DLG_SYSCONF), hWnd, SysConfProc); break; case IDM_TOOLBAR: vis = IsWindowVisible(globals.hToolBar); ShowWindow(globals.hToolBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_TYPELIB: { static const WCHAR filterW[] = {'%','s','%','c','*','.','t','l','b',';','*','.','o','l','b',';','*','.','d','l','l',';','*','.','o','c','x',';','*','.','e','x','e','%','c','%','s','%','c','*','.','*','%','c',0}; OPENFILENAMEW ofn; static WCHAR wszTitle[MAX_LOAD_STRING]; static WCHAR wszName[MAX_LOAD_STRING]; WCHAR filter_typelib[MAX_LOAD_STRING], filter_all[MAX_LOAD_STRING], filter[MAX_PATH]; LoadStringW(globals.hMainInst, IDS_OPEN, wszTitle, sizeof(wszTitle)/sizeof(wszTitle[0])); LoadStringW(globals.hMainInst, IDS_OPEN_FILTER_TYPELIB, filter_typelib, sizeof(filter_typelib)/sizeof(WCHAR)); LoadStringW(globals.hMainInst, IDS_OPEN_FILTER_ALL, filter_all, sizeof(filter_all)/sizeof(WCHAR)); snprintfW( filter, MAX_PATH, filterW, filter_typelib, 0, 0, filter_all, 0, 0 ); InitOpenFileName(hWnd, &ofn, filter, wszTitle, wszName); if(GetOpenFileNameW(&ofn)) CreateTypeLibWindow(globals.hMainInst, wszName); break; } case IDM_VIEW: hSelect = (HTREEITEM)SendMessageW(globals.hTree, TVM_GETNEXTITEM, TVGN_CARET, 0); if(IsInterface(hSelect)) InterfaceViewer(hSelect); else CreateTypeLibWindow(globals.hMainInst, NULL); break; case IDM_EXIT: DestroyWindow(hWnd); break; } return 0; }
static int MenuCommand(WPARAM wParam, HWND hWnd) { BOOL vis; HTREEITEM hSelect; WCHAR wszAbout[MAX_LOAD_STRING]; WCHAR wszAboutVer[MAX_LOAD_STRING]; switch(wParam) { case IDM_ABOUT: LoadString(globals.hMainInst, IDS_ABOUT, wszAbout, sizeof(WCHAR[MAX_LOAD_STRING])); LoadString(globals.hMainInst, IDS_ABOUTVER, wszAboutVer, sizeof(WCHAR[MAX_LOAD_STRING])); ShellAbout(hWnd, wszAbout, wszAboutVer, NULL); break; case IDM_COPYCLSID: hSelect = TreeView_GetSelection(globals.hTree); CopyClsid(hSelect); break; case IDM_HTMLTAG: hSelect = TreeView_GetSelection(globals.hTree); CopyHTMLTag(hSelect); break; case IDM_CREATEINST: hSelect = TreeView_GetSelection(globals.hTree); CreateInst(hSelect, NULL); SendMessage(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_CREATEINSTON: if(DialogBox(0, MAKEINTRESOURCE(DLG_CREATEINSTON), hWnd, CreateInstOnProc) == IDCANCEL) break; hSelect = TreeView_GetSelection(globals.hTree); CreateInst(hSelect, globals.wszMachineName); SendMessage(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_RELEASEINST: hSelect = TreeView_GetSelection(globals.hTree); ReleaseInst(hSelect); RefreshMenu(hSelect); RefreshDetails(hSelect); break; case IDM_EXPERT: globals.bExpert = !globals.bExpert; CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), globals.bExpert ? MF_CHECKED : MF_UNCHECKED); EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = TreeView_GetChild(globals.hTree, TVI_ROOT); SendMessage(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_FLAG_INSERV: vis = globals.dwClsCtx&CLSCTX_INPROC_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_INHANDL: vis = globals.dwClsCtx&CLSCTX_INPROC_HANDLER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_HANDLER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_HANDLER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_LOCSERV: vis = globals.dwClsCtx&CLSCTX_LOCAL_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_LOCAL_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_LOCAL_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_REMSERV: vis = globals.dwClsCtx&CLSCTX_REMOTE_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_REMOTE_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_REMOTE_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_REFRESH: EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = TreeView_GetChild(globals.hTree, TVI_ROOT); SendMessage(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_REGEDIT: { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); CreateProcess(NULL, wszRegEdit, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); break; } case IDM_STATUSBAR: vis = IsWindowVisible(globals.hStatusBar); ShowWindow(globals.hStatusBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_SYSCONF: DialogBox(0, MAKEINTRESOURCE(DLG_SYSCONF), hWnd, SysConfProc); break; case IDM_TOOLBAR: vis = IsWindowVisible(globals.hToolBar); ShowWindow(globals.hToolBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_TYPELIB: { OPENFILENAME ofn; static WCHAR wszTitle[MAX_LOAD_STRING]; static WCHAR wszName[MAX_LOAD_STRING]; static WCHAR wszFilter[MAX_LOAD_STRING]; LoadString(globals.hMainInst, IDS_OPEN, wszTitle, sizeof(wszTitle)); LoadString(globals.hMainInst, IDS_OPEN_TYPELIB_FILTER, wszFilter, sizeof(wszFilter)); InitOpenFileName(hWnd, &ofn, wszFilter, wszTitle, wszName); if(GetOpenFileName(&ofn)) CreateTypeLibWindow(globals.hMainInst, wszName); break; } case IDM_VIEW: hSelect = TreeView_GetSelection(globals.hTree); if(IsInterface(hSelect)) InterfaceViewer(hSelect); else CreateTypeLibWindow(globals.hMainInst, NULL); break; case IDM_EXIT: DestroyWindow(hWnd); break; } return 0; }