void CtrlRegisterList::onKeyDown(WPARAM wParam, LPARAM lParam) { RECT rect; GetClientRect(this->wnd, &rect); int page=(rect.bottom/rowHeight)/2-1; if (ctrlDown && tolower(wParam) == 'c') { copyRegisterValue(); return; } switch (wParam & 0xFFFF) { case VK_DOWN: selection++; break; case VK_UP: selection--; break; case VK_NEXT: selection+=4; break; case VK_PRIOR: selection-=4; break; case VK_CONTROL: ctrlDown = true; break; default: return; } redraw(); }
void CtrlRegisterList::onMouseUp(WPARAM wParam, LPARAM lParam, int button) { if (button==2) { //popup menu? int cat = category; int reg = selection; if (selection >= cpu->GetNumRegsInCategory(cat)) return; POINT pt; GetCursorPos(&pt); u32 val = cpu->GetRegValue(cat,reg); switch(TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,3),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0)) { case ID_REGLIST_GOTOINMEMORYVIEW: for (int i=0; i<numCPUs; i++) if (memoryWindow[i]) memoryWindow[i]->Goto(val); break; case ID_REGLIST_GOTOINDISASM: for (int i=0; i<numCPUs; i++) if (disasmWindow[i]) disasmWindow[i]->Goto(val); break; case ID_REGLIST_COPYVALUE: copyRegisterValue(); break; case ID_REGLIST_CHANGE: editRegisterValue(); break; } return; } int x = LOWORD(lParam); int y = HIWORD(lParam); if (x>16) { selection=yToIndex(y); selecting=false; ReleaseCapture(); redraw(); } }
void CtrlRegisterList::onMouseUp(WPARAM wParam, LPARAM lParam, int button) { int x = LOWORD(lParam); int y = HIWORD(lParam); if (button==2 && x>16) { //popup menu? int cat = category; int reg = selection; u32 val; if (selection < cpu->GetNumRegsInCategory(cat)) { val = cpu->GetRegValue(cat, reg); } else if (cat == 0 && selection < REGISTERS_END) { switch (selection) { case REGISTER_PC: val = cpu->GetPC(); break; case REGISTER_HI: val = cpu->GetHi(); break; case REGISTER_LO: val = cpu->GetLo(); break; default: return; } } else { return; } POINT pt; GetCursorPos(&pt); switch(TrackPopupMenuEx(GetSubMenu(g_hPopupMenus,3),TPM_RIGHTBUTTON|TPM_RETURNCMD,pt.x,pt.y,wnd,0)) { case ID_REGLIST_GOTOINMEMORYVIEW: SendMessage(GetParent(wnd),WM_DEB_GOTOHEXEDIT,val,0); break; case ID_REGLIST_GOTOINDISASM: for (int i=0; i<numCPUs; i++) if (disasmWindow[i]) disasmWindow[i]->Goto(val); break; case ID_REGLIST_COPYVALUE: copyRegisterValue(); break; case ID_REGLIST_CHANGE: editRegisterValue(); break; } return; } if (x>16) { selection=yToIndex(y); selecting=false; ReleaseCapture(); redraw(); } }