BOOL CStreamDlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CRect rect; GetWindowRect(&rect); GetClientRect(&m_rect); CDC memdc; //定义一个显示设备对象 CBitmap bmp; //定义一个位图对象 memdc.CreateCompatibleDC(pDC); //建立与屏幕显示兼容的内存显示设备 bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//建立一个与屏幕显示兼容的位图 memdc.SetBkMode(TRANSPARENT); CBitmap* pOldBmp = memdc.SelectObject(&bmp); //将位图选入到内存显示设备中 DWORD style = DT_CENTER|DT_SINGLELINE|DT_VCENTER; CBrush bru(RGB(239,255,255)); CRect cr(0,0,rect.Width(),rect.Height()); memdc.FillRect(&cr,&bru); //填充背景色 /* m_DlgPic.Load(IDR_JPG_DIALOG1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rect);*/ m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton1); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton2); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtclose); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton3); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton4); m_DlgPic.Load(IDR_JPG_BTN1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton5); switch(m_numbtn) { case 0: break; case 1: m_DlgPic.Load(IDR_JPG_BTN1_1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton); break; case 2: m_DlgPic.Load(IDR_JPG_BTN1_1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtclose); break; case 3: m_DlgPic.Load(IDR_JPG_BTN1_1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton1); break; case 4: m_DlgPic.Load(IDR_JPG_BTN1_1); if(m_DlgPic != NULL) m_DlgPic.Render(&memdc,m_rtbutton2); break; case 5: m_DlgPic.Load(IDR_JPG_BTN1_1); m_DlgPic.Render(&memdc,m_rtbutton3); break; case 6: m_DlgPic.Load(IDR_JPG_BTN1_1); m_DlgPic.Render(&memdc,m_rtbutton4); break; case 7: m_DlgPic.Load(IDR_JPG_BTN1_1); m_DlgPic.Render(&memdc,m_rtbutton5); break; default: break; } CFont font; font.CreateFont(14, 0, 0, 0 ,40, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_SWISS, "Verdana"); CFont *pOldfont = (CFont *)memdc.SelectObject(&font); memdc.SetTextColor(RGB(0, 0, 0)); //memdc.SetBkColor(TRANSPARENT);*/ memdc.DrawText(m_strLanguage[4],m_rtbutton,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[0],m_rtbutton1,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[0],m_rtbutton2,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[0],m_rtclose,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[1],m_rtbutton3,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[1],m_rtbutton4,DT_CENTER | DT_VCENTER | DT_SINGLELINE); memdc.DrawText(m_strLanguage[1],m_rtbutton5,DT_CENTER | DT_VCENTER | DT_SINGLELINE); pDC->BitBlt(0,0,m_rect.Width(),m_rect.Height(),&memdc,0,0,SRCCOPY); bmp.DeleteObject(); memdc.DeleteDC(); ReleaseDC(pDC); return true; }
void run(double *accum, int *cur_loc, mem_array mem) { int prg_counter = 0, // mem cell location of the command being executed next_loc = 0, // mem cell location of the next command to be executed run_flag = CONTINUE; // flag for when to stop the execution of the // user's program. Values are CONTINUE, STOP // and RUN_ERR char cmdtrans[80]; // an English translation of the current command enum speed run_speed; // the run mode hidemouse(); // if they want to run if(get_speed(&run_speed) == CONTINUE) { // set up screen for running put_accum(accum); clear_monitor(); clear_keyboard(); clear_keys(); /* user's program loop */ do { // execute at the next location prg_counter = next_loc; // THF patch, was +2 put_prg_counter(prg_counter + 1); put_instruct(mem[prg_counter]); bright_cell(prg_counter, mem[prg_counter]); // case statement for run mode switch(run_speed) { case SLOW: delay(SLOW_DELAY_TIME); break; case FAST: delay(FAST_DELAY_TIME); } /// if there is a command in the cell if(mem[prg_counter].entry_type == CMD) { // command type case statement switch(mem[prg_counter].cmd_type) { case LDC: run_flag = ldc(accum, mem, cmdtrans, prg_counter, &next_loc); break; case ADC: run_flag = adc(accum, mem, cmdtrans, prg_counter, &next_loc); break; case LDA: run_flag = lda(accum, mem, cmdtrans, prg_counter, &next_loc); break; case STA: run_flag = sta(accum, mem, cmdtrans, prg_counter, &next_loc); break; case ADD: run_flag = add(accum, mem, cmdtrans, prg_counter, &next_loc); break; case SUB: run_flag = sub(accum, mem, cmdtrans, prg_counter, &next_loc); break; case MUL: run_flag = mul(accum, mem, cmdtrans, prg_counter, &next_loc); break; case DIV: run_flag = div(accum, mem, cmdtrans, prg_counter, &next_loc); break; case INP: run_flag = inp(mem, cmdtrans, prg_counter, &next_loc); break; case OUT: run_flag = out(mem, cmdtrans, prg_counter, &next_loc); break; case BPA: run_flag = bpa(accum, mem, cmdtrans, prg_counter, &next_loc); break; case BNA: run_flag = bna(accum, mem, cmdtrans, prg_counter, &next_loc); break; case BZA: run_flag = bza(accum, mem, cmdtrans, prg_counter, &next_loc); break; case BRU: run_flag = bru(mem, cmdtrans, prg_counter, &next_loc); break; case STP: run_flag = stp(cmdtrans, prg_counter, &next_loc); if(run_speed == CYCLE) { display_cmdtrans(cmdtrans); } break; default: run_err_message("ERROR: Unkown command at this location."); run_flag = RUN_ERR; break; } } else { run_err_message("ERROR: Unkown command at this location."); run_flag = RUN_ERR; } // check to see if the user wants to stop if(kbhit()) { if(getch() == EscKey) { run_flag = STOP; } } if((run_speed == CYCLE) && (run_flag == CONTINUE)) { run_flag = display_cmdtrans(cmdtrans); } dim_cell(prg_counter, mem[prg_counter]); } while((run_flag == CONTINUE) && (mem[prg_counter].cmd_type != STP)); // clear the registers when program is done clear_instruct(); clear_prg_counter(); } showmouse(); if(run_flag == RUN_ERR) { *cur_loc = prg_counter; } display_keys(); }