⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dasm.cpp

📁 反汇编工具borg2.27源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        case block_top:
          scheduler.addtask(user_marktopblock,priority_userrequest,nlptr,NULL);
          break;
        case block_bottom:
          scheduler.addtask(user_markbottomblock,priority_userrequest,nlptr,NULL);
          break;
		  case line_jumpto:
			 scheduler.addtask(user_jumpto,priority_userrequest,nlptr,NULL);
			 break;
		  case line_jumptoarg2:
			 scheduler.addtask(user_jumptoarg2,priority_userrequest,nlptr,NULL);
			 break;
		  case Name_Location:
			 namelocation();
			 break;
		  case help_short:
			 DialogBox(hInst,MAKEINTRESOURCE(help_shortcuts),hwnd,(DLGPROC)helpshortcuts);
			 break;
		  case help_about:
			 DialogBox(hInst,MAKEINTRESOURCE(D_help_about),hwnd,(DLGPROC)habox);
			 break;
		  case Jump_Back:
			 scheduler.addtask(user_jumpback,priority_userrequest,nlptr,NULL);
			 break;
		  case main_search:
			 searchengine();
			 break;
        case search_again:
          searchmore();
          break;
        case set_bg_color:
          options.bgcolor=choosecolour(options.bgcolor);
          GetClientRect(mainwindow,&tmp_rect);
          InvalidateRect(mainwindow,&tmp_rect,true);
          scheduler.addtask(windowupdate,priority_window,nlptr,NULL);
          break;
        case set_high_color:
          options.highcolor=choosecolour(options.highcolor);
          GetClientRect(mainwindow,&tmp_rect);
          InvalidateRect(mainwindow,&tmp_rect,true);
          scheduler.addtask(windowupdate,priority_window,nlptr,NULL);
          break;
        case set_text_color:
          options.textcolor=choosecolour(options.textcolor);
          GetClientRect(mainwindow,&tmp_rect);
          InvalidateRect(mainwindow,&tmp_rect,true);
          scheduler.addtask(windowupdate,priority_window,nlptr,NULL);
          break;
        case font_system:
          options.font=systemfont;
          setupfont();
          break;
        case font_courier:
          options.font=courierfont;
          setupfont();
          break;
        case font_courier10:
          options.font=courierfont10;
          setupfont();
          break;
        case font_courier12:
          options.font=courierfont12;
          setupfont();
          break;
        case font_ansi:
          options.font=ansifont;
          setupfont();
          break;
		  default:
			 return DefWindowProc(hwnd,message,wParam,lParam);
		}
		break;
	 case WM_CHAR:
		if(charinputenabled)
		  switch(wParam)
		  { case 'c':
			   scheduler.addtask(user_makecode,priority_userrequest,nlptr,NULL);
			   break;
		    case 'C':
			   scheduler.addtask(user_argoverchar,priority_userrequest,nlptr,NULL);
			   break;
		    case 'd':
			   scheduler.addtask(user_makedword,priority_userrequest,nlptr,NULL);
			   break;
		    case 'D':
			   scheduler.addtask(user_argoverdec,priority_userrequest,nlptr,NULL);
			   break;
		    case 'H':
			   scheduler.addtask(user_argoverhex,priority_userrequest,nlptr,NULL);
			   break;
          case '-':
            scheduler.addtask(user_argnegate,priority_userrequest,nlptr,NULL);
            break;
		    case 'n':
			   namelocation();
			   break;
          case ';':
            getcomment();
        	   break;
		    case 'o':
			   scheduler.addtask(user_argoveroffsetdseg,priority_userrequest,nlptr,NULL);
			   break;
		    case 'p':
			   scheduler.addtask(user_pascalstring,priority_userrequest,nlptr,NULL);
			   break;
		    case 's':
			   scheduler.addtask(user_makestring,priority_userrequest,nlptr,NULL);
			   break;
		    case 'u':
			   scheduler.addtask(user_undefineline,priority_userrequest,nlptr,NULL);
			   break;
		    case 'U':
			   scheduler.addtask(user_undefinelines,priority_userrequest,nlptr,NULL);
			   break;
		    case 'w':
			   scheduler.addtask(user_makeword,priority_userrequest,nlptr,NULL);
			   break;
          case 't':
            scheduler.addtask(user_marktopblock,priority_userrequest,nlptr,NULL);
            break;
          case 'b':
            scheduler.addtask(user_markbottomblock,priority_userrequest,nlptr,NULL);
            break;
		    default:
			   break;
		  }
		break;
	 case WM_LBUTTONDOWN:
		dio.setpos(HIWORD(lParam));
		break;
	 case WM_RBUTTONDOWN:
		dio.setpos(HIWORD(lParam));
		point.x=LOWORD(lParam);
		point.y=HIWORD(lParam);
		ClientToScreen(mainwindow,&point);
		TrackPopupMenu(rmenu,0,point.x,point.y,0,mainwindow,NULL);
		break;
	 case WM_PAINT:
		if(!KillThread)
        DoPaint(hwnd,cxChar,cyChar);
		else
        PaintBack(hwnd);
		//ValidateRect(mainwindow,NULL);
		break;
	 case WM_CLOSE:
		if(MessageBox(mainwindow,"Are you sure that you want to exit Borg ?\n\rHit Yes To Exit\n\rHit No to Stay","Borg Disassembler",
		   MB_ICONEXCLAMATION|MB_YESNO)==IDNO)
        break;
      scheduler.stopthread();
		scheduler.addtask(quitborg,priority_quit,nlptr,NULL);
		KillThread=true;
		if(InThread)
        SetThreadPriority(ThreadHandle,THREAD_PRIORITY_TIME_CRITICAL);
		DestroyWindow(mainwindow);
		return 0;
	 case WM_DESTROY:
      save_reg_entries();
		KillThread=true;
		killcount=0;
		Sleep(0);
		SetPriorityClass(ThreadHandle,HIGH_PRIORITY_CLASS);
		if(InThread)
		  while(TestThread())
		  { killcount++;
			 if(killcount>2)
			 { // this is a nasty way of getting out.
				// sometimes the thread just will not exit nicely when its busy.
				if(TerminateThread(ThreadHandle,1))
				{ CloseHandle(ThreadHandle);
				  break;
				}
			 }
		  }
		DeleteCriticalSection(&cs);
		PostQuitMessage(0);
		break;
	 case WM_SIZE:
    	if(wParam==SIZE_MAXIMIZED)
        options.winmax=true;
      else if (wParam==SIZE_RESTORED)
        options.winmax=false;
		mainwndsize.top=0;
		mainwndsize.left=0;
		mainwndsize.right=LOWORD(lParam);
		mainwndsize.bottom=HIWORD(lParam);
		GetWindowRect(hwndStatusBar,&StatusWindowSize);
		GetWindowRect(mainwindow,&mainwnd);
		MoveWindow(hwndStatusBar,0,mainwndsize.bottom-StatusWindowSize.bottom+StatusWindowSize.top,
		  mainwndsize.right,StatusWindowSize.bottom-StatusWindowSize.top,true);
		break;
	 case WM_VSCROLL:
		switch(LOWORD(wParam))
		{ case SB_TOP:
			 break;
		  case SB_BOTTOM:
			 break;
		  case SB_LINEUP:
			 scrll.assign(0,-1);
			 if(InThread)
            scheduler.addtask(scrolling,priority_userrequest,scrll,NULL);
			 break;
		  case SB_LINEDOWN:
			 scrll.assign(0,1);
			 if(InThread)
            scheduler.addtask(scrolling,priority_userrequest,scrll,NULL);
			 break;
		  case SB_PAGEUP:
			 scrll.assign(0,-mainwndsize.bottom/cyChar+1);
			 if(InThread)
            scheduler.addtask(scrolling,priority_userrequest,scrll,NULL);
			 break;
		  case SB_PAGEDOWN:
			 scrll.assign(0,mainwndsize.bottom/cyChar-1);
			 if(InThread)
            scheduler.addtask(scrolling,priority_userrequest,scrll,NULL);
			 break;
		  case SB_THUMBPOSITION:
          scrll.assign(0,HIWORD(wParam));
          if(InThread)
            scheduler.addtask(vthumbposition,priority_userrequest,scrll,NULL);
			 break;
		  default:
			 break;
		}
		break;
	 case WM_HSCROLL:
		switch(LOWORD(wParam))
		{ case SB_LINEUP:
			 scrll.assign(0,-1);
			 scheduler.addtask(hscroll,priority_userrequest,scrll,NULL);
			 break;
		  case SB_LINEDOWN:
			 scrll.assign(0,1);
			 scheduler.addtask(hscroll,priority_userrequest,scrll,NULL);
			 break;
		  case SB_PAGEUP:
			 scrll.assign(0,-8);
			 scheduler.addtask(hscroll,priority_userrequest,scrll,NULL);
			 break;
		  case SB_PAGEDOWN:
			 scrll.assign(0,8);
			 scheduler.addtask(hscroll,priority_userrequest,scrll,NULL);
			 break;
		  case SB_THUMBPOSITION:
          scrll.assign(0,HIWORD(wParam));
          if(InThread)
            scheduler.addtask(hthumbposition,priority_userrequest,scrll,NULL);
			 break;
		  default:
			 break;
		}
		break;
    case WM_REPEATNAMEVIEW:
      namesviewer();
      break;
    case WM_REPEATXREFVIEW:
      xrefsviewer();
      break;
    // maximises window, used when the reg is read in at the start to maximise
    // the main window after initialisation of it
    case WM_MAXITOUT:
    	ShowWindow(mainwindow,SW_MAXIMIZE);
      break;
	 case WM_CREATE:
		optionsinit();
		hdc=GetDC(hwnd);
		SelectObject(hdc,GetStockObject(ANSI_FIXED_FONT));
		GetTextMetrics(hdc,&tm);
		cxChar=tm.tmAveCharWidth;
		cyChar=tm.tmHeight+tm.tmExternalLeading;
		ReleaseDC(hwnd,hdc);
		InitializeCriticalSection(&cs);
		hwndStatusBar=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|CCS_BOTTOM,
		  "No File Loaded",hwnd,2);
		GetWindowRect(hwndStatusBar,&StatusWindowSize);
		GetWindowRect(mainwindow,&mainwnd);
		SetScrollRange(hwnd,SB_VERT,0,VERTSCROLLRANGE,false);
		SetScrollPos(hwnd,SB_VERT,0,false);
		KillThread=false;
		InThread=false;
		rmenu=LoadMenu(hInst,MAKEINTRESOURCE(right_click_menu));
		rmenu=GetSubMenu(rmenu,0);
      load_reg_entries();
      setupfont();
		break;
	 case WM_KEYDOWN:
      if(!charinputenabled) break;
		switch(wParam)
		{ case VK_HOME:
			 SendMessage(hwnd,WM_VSCROLL,SB_TOP,0L);
			 break;
		  case VK_PRIOR:
			 SendMessage(hwnd,WM_VSCROLL,SB_PAGEUP,0L);
			 break;
		  case VK_NEXT:
			 SendMessage(hwnd,WM_VSCROLL,SB_PAGEDOWN,0L);
			 break;
		  case VK_DOWN:
			 SendMessage(hwnd,WM_VSCROLL,SB_LINEDOWN,0L);
			 break;
		  case VK_UP:
			 SendMessage(hwnd,WM_VSCROLL,SB_LINEUP,0L);
			 break;
		  case VK_LEFT:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -