LRESULT CExtractDlg::OnNMClickLinkMolCount(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled) { PNMLINK link = (PNMLINK) pNMHDR; switch(link->item.iLink) { case 0: // Extract Count DisplayGroup(1); break; case 1: // Select Output Directory if(!SUCCEEDED(Utils::DoFolderDialog(m_hWnd, _T("Extract Molecules to Folder..."), m_params.folderPath, m_params.folderPath))) { //TODO: log } break; case 3: // File Format DisplayGroup(2); break; case 2: case 4: POINT point; if(GetCursorPos(&point)) { HMENU hMenu = LoadMenu(_AtlBaseModule.m_hInst, MAKEINTRESOURCE(IDR_EXTRACTMENU)); if(hMenu) { int subMenuId = (link->item.iLink == 2) ? 0 : 1; HMENU hSubMenu = GetSubMenu(hMenu, subMenuId); //WORKAROUND: To be removed when provider issues with RXN -> CML, CDXML are fixed // disable CML,CDXML if source is reaction to avoid crash due to provider issue if((m_params.exportFormat == fmtRXNV2) || (m_params.exportFormat == fmtRXNV3)) { EnableMenuItem(hSubMenu, ID_EXTRACTFORMAT_CML, MF_DISABLED); EnableMenuItem(hSubMenu, ID_EXTRACTFORMAT_CDXML, MF_DISABLED); } TrackPopupMenuEx(hSubMenu, TPM_LEFTALIGN, point.x, point.y, m_hWnd, NULL); DestroyMenu(hMenu); } } break; } UpdateLinkText(); return 0; }
void menu_first_display(void)// 必须在MenuInit函数之后调用 { clear_block(0,0,192,64); update_disp_data(0,0,192,64); DisplayGroup(gsnCurMGrp); DisplayOneState(0,gByteData[VAL_DSCS_MODE]); }
void MenuInit(void) { //int i;// yasirLiang add in20160603 unsigned char MenuLang; ByteDataGet(VAL_MENU_LANG,&MenuLang); if(MenuLang!=ENGLISH) { MenuLang = CHINESE; ByteDataSave(VAL_MENU_LANG,MenuLang); } else { ChangeLanguage(ENGLISH); } gPresetTmnSelPro.RunFlag = 0; gPresetTmnSelPro.Addr = FULL_VIEW_ADDR; gsnCurMGrp=0; ByteDataInit(); #if 0 sleep(1); clear_block(0,0,192,64); update_disp_data(0,0,192,64); DisplayGroup(gsnCurMGrp); #if 0 // yasir change in 2016-4-7 DisplayOneState(0,PPT_MODE); #else DisplayOneState(0,gByteData[VAL_DSCS_MODE]); #endif sleep(1); #endif }
void ItemSelected(short snMGSeq) { TMenu *pMenu; short usNew; //unsigned char Index;// yasirliang change in 20160603 // int i; // yasirliang change in 20160603 unsigned char MenuLang; ByteDataGet(VAL_MENU_LANG,&MenuLang); usNew = snMGSeq; if(gMG[snMGSeq].Type==ST_CMN) //普通菜单项 { pMenu = gMG[snMGSeq].FirstItem + gMG[snMGSeq].Position; if(pMenu->Type == MT_MENU) { if(pMenu->Link!=MGS_NONE) { usNew = pMenu->Link; if(gMG[snMGSeq].Level > gMG[usNew].Level) gMG[snMGSeq].Position = 0; } if(pMenu->fpMenuDo != NULL) pMenu->fpMenuDo(0); //pMenu->fpMenuDo(NULL); } else if(pMenu->Type == MT_SWITCH) //语言切换 { if(MenuLang == CHINESE) ChangeLanguage(ENGLISH); else ChangeLanguage(CHINESE); usNew = 0; gMG[usNew].Position = 0; } else if((pMenu->Type==MT_YESNO)||(pMenu->Type==MT_ONOFF)) //不跳转,直接改变值 { gMG[snMGSeq].ss.BitState ^= (1<<gMG[snMGSeq].Position); if(pMenu->fpMenuDo != NULL) pMenu->fpMenuDo(gMG[snMGSeq].ss.BitState&(1<<gMG[snMGSeq].Position)); DisplayMItem(gMG+snMGSeq,gMG[snMGSeq].Position%3,gMG[snMGSeq].Position,MD_REVERSE); return; } else { // 记录当前页 if((gsnCurMGrp==0)&&(pMenu->Link!=0)) { UseDisSet(CPT_USE,BOOL_TRUE); } gsnCurMGrp = pMenu->Link; //DEBUG_INFO("gsnCurMGrp=%d,gMG[gsnCurMGrp].Position=%d\n",gsnCurMGrp,gMG[gsnCurMGrp].Position); DisplayMItem(gMG+gsnCurMGrp,-1,gMG[gsnCurMGrp].Position,MD_NORMAL); if(ENGLISH==MenuLang) { clear_block(0,10,191,39); update_disp_data(0,10,191,39); } else { clear_block(0,16,118,63); update_disp_data(0,16,118,63); } RenewMenuValue(pMenu->Link,0); MenuScroll(pMenu->Link,0); return; } } else { usNew = gMG[snMGSeq].Count; //DEBUG_INFO("snMGSeq=%d,usNew=%d\n",snMGSeq,usNew); if(gMG[snMGSeq].Type==ST_VALUE) { SendMainState(0,NULL,0); } else if(gMG[snMGSeq].Type==ST_MODE) { pMenu = gMG[usNew].FirstItem + gMG[usNew].Position; if(pMenu->fpMenuDo!=NULL) { pMenu->fpMenuDo(gMG[snMGSeq].Position); } DisplayOneState(0,gMG[snMGSeq].Position); SendMainState(0,NULL,0); } } DisplayGroup(usNew); // 显示当前页 // DisplayGroup(usNew); // 记录当前页 if((usNew==0)&&(gsnCurMGrp>0)) { UseDisSet(CPT_USE,BOOL_FALSE); } else if((gsnCurMGrp==0)&&(usNew>0)) { UseDisSet(CPT_USE,BOOL_TRUE); } gsnCurMGrp = usNew; }