LRESULT NativeWindow::HandleMessages(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_ERASEBKGND: return OnEraseBkgnd(); case WM_TIMER: { OnTimer((UINT)wParam); } break; case WM_SIZE: { int cx = LOWORD(lParam); int cy = HIWORD(lParam); OnSize((UINT)wParam,cx,cy); } break; case WM_GETMINMAXINFO: { OnGetMinMaxInfo((MINMAXINFO *)lParam); } break; default: break;; } return CallWindowProc(old_window_proc_,hwnd_, message, wParam, lParam); }
LRESULT CActiveXWnd::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam, bool &bHandled ) { LRESULT lRes = 0; bHandled = true; switch( uMsg ) { case WM_PAINT: lRes = OnPaint(uMsg, wParam, lParam, bHandled); break; case WM_SETFOCUS: lRes = OnSetFocus(uMsg, wParam, lParam, bHandled); break; case WM_KILLFOCUS: lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); break; case WM_ERASEBKGND: lRes = OnEraseBkgnd(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEACTIVATE: lRes = OnMouseActivate(uMsg, wParam, lParam, bHandled); break; default: bHandled = FALSE; } return lRes; }
LRESULT ViewCaption::OnPrintClient(WPARAM wdc, LPARAM flags) { if (CDC* dc= CDC::FromHandle(HDC(wdc))) OnEraseBkgnd(dc); return 0; }
BOOL CLayoutManager::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT * pResult, BOOL bPeek) { int i; if (! m_bActive) return FALSE; switch (message) { case WM_GETMINMAXINFO: if (! bPeek) { MINMAXINFO * pMMI = (LPMINMAXINFO) lParam; pMMI->ptMinTrackSize.x = m_dwMinWidth; pMMI->ptMinTrackSize.y = m_dwMinHeight; } break; case WM_NCCALCSIZE: if (wParam) OnNcCalcSize(bPeek, (LPNCCALCSIZE_PARAMS)lParam, pResult); break; case WM_ERASEBKGND: OnEraseBkgnd(bPeek, (HDC)wParam); break; case WM_SIZE: if (! bPeek) OnSize(LOWORD(lParam), HIWORD(lParam)); break; case WM_MOVING: if (bPeek) { OnMoving(wParam, (RECT*)lParam); *pResult = TRUE; return TRUE; } break; case WM_ENTERSIZEMOVE: case WM_EXITSIZEMOVE: if (! bPeek) break; for (i=0; i<m_vControls.size(); i++) m_vControls[i].pWnd->SendMessage(message, wParam, lParam); break; } return FALSE; }
LRESULT CWidgetAddress::OnPrint(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { TRY_CATCH RECT rc; GetClientRect(&rc); CMemoryDC memDC(reinterpret_cast<HDC>(wParam), rc); // Drawing original ComboBox item DefWindowProc(WM_PRINT,reinterpret_cast<WPARAM>(memDC.m_hDC),lParam); memDC.ExcludeClipRect(rc.left,rc.top,rc.right,rc.bottom); return OnEraseBkgnd(hWnd, uMsg,reinterpret_cast<WPARAM>(memDC.m_hDC), lParam, bHandled); CATCH_THROW() }
LRESULT CWidgetAddress::OnPaint(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { TRY_CATCH LRESULT res = OnEraseBkgnd(hWnd, uMsg, wParam, lParam, bHandled); // Drawing original ComboBox item RECT rc; GetClientRect(&rc); InvalidateRect(&rc, FALSE); DefWindowProc(WM_PAINT,wParam,lParam); return res; CATCH_THROW() }
LRESULT CActiveXWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes=0; BOOL bHandled = TRUE; switch( uMsg ) { case WM_PAINT: lRes = OnPaint(uMsg, wParam, lParam, bHandled); break; case WM_SETFOCUS: lRes = OnSetFocus(uMsg, wParam, lParam, bHandled); break; case WM_KILLFOCUS: lRes = OnKillFocus(uMsg, wParam, lParam, bHandled); break; case WM_ERASEBKGND: lRes = OnEraseBkgnd(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEACTIVATE: lRes = OnMouseActivate(uMsg, wParam, lParam, bHandled); break; case WM_MOUSEWHEEL: break; default: bHandled = FALSE; } if( !bHandled ) return CWindowWnd::HandleMessage(uMsg, wParam, lParam); return lRes; }
LRESULT CMainWnd::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { //创建窗口后先发送WM_CREATE消息创建控件,再发送WM_ERASEBKGND消息擦除背景,然后发送WM_SIZE消息调整窗口大小,发送WM_PAINT消息进行重绘 switch (uMsg) { case WM_CREATE: OnCreate(hWnd, wParam, lParam); break; case WM_PAINT: OnPaint(wParam, lParam);//绘制消息 break; case WM_ERASEBKGND: return OnEraseBkgnd(wParam, lParam); case WM_SIZE: OnSize(wParam, lParam);//大小改变消息 break; case WM_MOVE: GetWindowRect(hWnd, &rtWindow);//获取整个主窗体的窗口矩形 GetClientRectEx(&rtClient);//获取主窗体客户区的矩形 break; case WM_NOTIFY: OnNotify(wParam, lParam);//子窗体通知消息 break; case WM_COMMAND: OnCommand(wParam, lParam);//菜单或者按钮控件消息 break; case WM_MENUSELECT: OnMenuSelect(wParam, lParam); //菜单选择消息 break; case WM_LBUTTONDOWN: OnLButtonDown(wParam, lParam);//左键单击消息 break; case WM_LBUTTONDBLCLK: OnLButtonDbClick(wParam, lParam);//左键双击消息 break; case WM_RBUTTONDOWN: OnRButtonDown(wParam, lParam);//右键单击消息 break; case WM_MOUSEMOVE: OnMouseMove(wParam, lParam);//鼠标移动消息 break; case WM_KEYDOWN: OnKeyDown(wParam, lParam);//键盘按键消息 break; case WM_TIMER: OnTimer(wParam, lParam);//定时器消息 break; case WM_CLOSE: OnClose(wParam, lParam); //关闭窗体消息 break;//用户点击关闭按钮时,不需要系统来处理 case WM_DESTROY: OnDestroy(wParam, lParam); //破坏窗体消息 break; //自定义消息 case GM_NAME://设置引擎名 SetName((char*)wParam, (int)lParam); break; case GM_SHOWSTEP://显示着法信息(由其中支持模块发送) AppendStepHis((char*)wParam); Function::SaveBoardShot(); Function::SaveChessManual((char*)wParam); break; case GM_WINLOSE: Function::GameStop(); ShowWiner((int)lParam); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam);//处理不完全的消息或者其它消息统一由系统处理 } return 0; }
// Basic window proc. It simply forward interesting messages to the appropriate handlers (OnXXX). // If child class defines this function, it should pass unhandled messages to CFlexWnd. LRESULT CFlexWnd::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_GETFLEXWND: { if ((LPVOID)lParam == NULL) break; GETFLEXWNDSTRUCT &gfws = *((FAR GETFLEXWNDSTRUCT *)(LPVOID)lParam); switch (gfws.cbSize) { case sizeof(GETFLEXWNDSTRUCT): gfws.bFlexWnd = TRUE; gfws.pFlexWnd = this; return 0; default: assert(0); break; } break; } case WM_CREATE: { LPCREATESTRUCT lpCreateStruct = (LPCREATESTRUCT)lParam; LRESULT lr = OnCreate(lpCreateStruct); if (lr != -1) OnInit(); return lr; } case WM_INITDIALOG: { BOOL b = OnInitDialog(); OnInit(); return b; } case WM_TIMER: OnTimer((UINT)wParam); return 0; case WM_ERASEBKGND: return OnEraseBkgnd((HDC)wParam); case WM_PAINT: { // Check the update rectangle. If we don't have it, exit immediately. if (typeid(*this) == typeid(CDeviceView) && !GetUpdateRect(m_hWnd, NULL, FALSE)) return 0; PAINTSTRUCT ps; HDC hDC = BeginPaint(hWnd, &ps); if (InRenderMode()) OnRender(TRUE); else DoOnPaint(hDC); EndPaint(hWnd, &ps); return 0; } case WM_COMMAND: { WORD wNotifyCode = HIWORD(wParam); WORD wID = LOWORD(wParam); HWND hWnd = (HWND)lParam; return OnCommand(wNotifyCode, wID, hWnd); } case WM_NOTIFY: return OnNotify(wParam, lParam); case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_MOUSEWHEEL: { POINT point = {int(LOWORD(lParam)), int(HIWORD(lParam))}; switch (msg) { case WM_MOUSEMOVE: OnMouseOver(point, wParam); break; case WM_LBUTTONDOWN: OnClick(point, wParam, TRUE); break; case WM_RBUTTONDOWN: OnClick(point, wParam, FALSE); break; case WM_LBUTTONDBLCLK: OnDoubleClick(point, wParam, TRUE); break; case WM_MOUSEWHEEL: { // Send wheel msg to the window beneath the cursor HWND hWnd = WindowFromPoint(point); CFlexWnd *pWnd = NULL; if (hWnd) { pWnd = GetFlexWnd(hWnd); if (pWnd) pWnd->OnWheel(point, wParam); else return DefWindowProc(hWnd, msg, wParam, lParam); } break; } } return 0; } case WM_DESTROY: OnDestroy(); m_privhWnd = NULL; return 0; } if (!m_bIsDialog) return DefWindowProc(hWnd, msg, wParam, lParam); else return 0; }
void CGUIFaceInVideoView::OnDraw(CDC* pDC) { CGUIFaceInVideoDoc* pDoc = GetDocument(); // CGUIFaceInVideoView* pView = (CGUIFaceInVideoView*)GetActiveView(); // CGUIFaceInVideoDoc *pDoc = (CGUIFaceInVideoDoc*)pView->GetDocument(); ASSERT_VALID(pDoc); if (pDoc == NULL) return; CFaceRecognizer *frIds = & pDoc->m_frIds; // in 24x24 image // char sWhatValuesToUse[5]; // "011" - don't use I, use dIx, dIy // char sHowToCrop[5]; // "22001" - cut from left and right 2 pixels , from top/bottom 0 pixels and scale by 1. char // sWhatValuesToUse[]="111", sWhatValuesToUse[]="111", sHowToCrop[]="00001"; // just remeber: The m_imgY will not be diplayed properly if m_nWidth is not muliple of 4 ! sHowToCrop[3]='0'; frIds->initialize(10, sWhatValuesToUse, sHowToCrop); CIplImage *pImgIn; CvPoint *pPointL, *pPointR; int nNameTag, nBestMatch; char strMessage[256], str[200], strNameTag[40]; /* if (frIds->m_nStoredFaces > frIds->m_pinn.m_N / 2) // MAX_FACES - 1 ) { OnDraw_LogWindow(pDC, "Memory is full!", set_window(0,0), 0); return; } */ // Update all sliders data: frIds->m_pinn.m_nNoise = pDoc->m_gui.slider1*frIds->m_pinn.m_N/100; frIds->m_pinn.m_D = pDoc->m_gui.slider2/100.0; //Doc->m_memory.m_pinn.m_dFade=1;// 1-pDoc->m_gui.slider3/1000.0; // ************************************************************************************************ // Show MemoryContents // ************************************************************************************************ if (m_nVideoStream == VIDEO_STREAM_CURRENT_FRAME) // Draw all stored faces for(int n=0; n< MIN (frIds->m_nStoredFaces, FR_MAX_FACES); n++) // frIds->m_nStoredFaces frIds->m_arrImgStoredFaces[n].draw(pDC->m_hDC, set_faceRect(n)); if (m_bShowPINN ) // Draw the contents of PINN memory { // if (m_bShowPINNwell ) { /* RECT rect; rect.left = IMAGE_160*2+2; rect.top = 0; rect.right = rect.left + frIds->m_pinn.m_N; rect.bottom = rect.top + frIds->m_pinn.m_N; */ frIds->getPINNasImage()-> draw(pDC->m_hDC, set_window(3,0, 1, 1), false); } // else // frIds->getPINNasImage()->draw(pDC->m_hDC, set_window(4,0, 264), true); //, false); } // Clear memory and reset all checks to unchecked if (pDoc->m_gui.check3) { CMainFrame *pMainFrm = (CMainFrame*)GetParentFrame(); CButton* check = (CButton*)((pMainFrm->GetDlgItem(IDD_DIALOGBAR1))->GetDlgItem(IDC_CHECK2)); check->SetCheck(BST_UNCHECKED); // back to video mode check = (CButton*)((pMainFrm->GetDlgItem(IDD_DIALOGBAR1))->GetDlgItem(IDC_CHECK1)); check->SetCheck(BST_UNCHECKED);// back to memorization mode check = (CButton*)((pMainFrm->GetDlgItem(IDD_DIALOGBAR1))->GetDlgItem(IDC_CHECK3)); check->SetCheck(BST_UNCHECKED); pDoc->m_gui.check1 = false; pDoc->m_gui.check2 = false; pDoc->m_gui.check3 = false; // fclose(pDoc->m_fScenario); // fclose(pDoc->m_fScenarioTest); pDoc->closeFaceList(); pDoc->openFaceList(); pMainFrm->UpdateData(FALSE); frIds->destroy(); OnEraseBkgnd(pDC); // pDoc->m_bWorkWithFiles = false; OnDraw_LogWindow(pDC, "Memory cleared ", set_window(1,0), 0); return; } /***************************************************************************************/ /*** Use data from video camera / AVI **************************************************/ /***************************************************************************************/ CPerceptualVisionSystem *pPVS = pDoc->getPVS(); OnDraw_LogWindow(pDC, pPVS->m_strFrameRate, set_window(0,2,1,0), 0); sprintf(strMessage, "%i: %i (%i) msec ", pPVS->m_nFrame, pPVS->m_tBetweenFrames, pPVS->m_tBetweenFramesNow); OnDraw_LogWindow(pDC, strMessage, set_window(0,2), 1); bool bRes = pPVS->initializeNextFrame(); if (bRes == false) return; // if want to show it but not process it, change it. pPVS->m_imgIn.draw(pDC->m_hDC, set_window(0,0), false, false); // Detect up to 1 person and // load the rescaled to 28x28 face of this person into m_face int nFacesDetected = pPVS->m_fd.detectFacesIn(&pPVS->m_imgBW); if (nFacesDetected<=0) return; sprintf(strMessage, "%i faced detected", nFacesDetected); OnDraw_LogWindow(pDC, strMessage, set_window(0,2), -2); if (nFacesDetected>1) OnDraw_LogWindow(pDC, strMessage, set_window(0,1,1,0), 5); else OnDraw_LogWindow(pDC, " ", set_window(0,1,1,0), 5); pPVS->m_chanColour.updateImages(&pPVS->m_imgIn);// NB: Colour is useless, unless you recompute skin model (like Bradski) pPVS->m_chanMotion.updateImages(&pPVS->m_imgIn); pPVS->m_chanMotion.compute_dI(); // pPVS->m_chanMotion.compute_ddI(); pPVS->m_chanMotion.compute_FG(); int nFaceRotation; for(int nFace=0; nFace<nFacesDetected; nFace++) // for(int nFace=0; nFace<1; nFace++) { CvPoint ptL, ptR; int nEye; CFace::fdRect2Eyes(pPVS->m_fd.getLocationOfFace(nFace), &ptL, &ptR, &nEye); CvPoint pt00={ptL.x-nEye/2, ptL.y-nEye/2}, pt11={ptR.x+nEye/2, ptR.y+nEye}; CvRect rect={pt00.x, pt00.y, pt11.x-pt00.x, pt11.y-pt00.y}; cvRectangle(pPVS->m_imgOut.getIplImage(), pt00, pt11, 0xffffaa, 2 ); // Detect rotation - do it later nFaceRotation = g_findDominantOrientation(&pPVS->m_imgBW, rect, 5); ptL.y -= 3.14/180.0*nEye*nFaceRotation; ptR.y += 3.14/180.0*nEye*nFaceRotation; CFace::draw_Glasses(&pPVS->m_imgOut, ptL, ptR, 0xff00aa); sprintf(strMessage, "%3i degrees rotated", nFaceRotation); OnDraw_LogWindow(pDC, strMessage, set_window(1,2), 5); //////////////////////////////// PVI_BLOB blobC1, blobC2, blobM; bool resC1 = isThereAnything(&pPVS->m_chanColour.m_imbSkinYCrCb, &rect, &blobC1); // bool resC1 = pPVS->m_chanMotion.isThereAnything(&pPVS->m_chanColour.m_imbSkinYCrCb, &rect, &blobC1); bool resC2 = isThereAnything(&pPVS->m_chanColour.m_imbSkinUCS, &rect, &blobC2); bool resM = isThereAnything(&pPVS->m_chanMotion.m_imbFG, &rect, &blobM); // bool resM = pPVS->m_chanMotion.isThereSomething(&pPVS->m_chanMotion.m_imbFG, &rect, &blobM); /* if ( ! resC1 ) // ( (blobC1.N > rect0->width) && (blobC1.N > rect0->width) )) { sprintf(strMessage, "No skin detected" ); OnDraw_LogWindow(pDC, strMessage, set_window(1,3), 0); return; } else { sprintf(strMessage, "Skin detected " ); OnDraw_LogWindow(pDC, strMessage, set_window(1,3), 0); } */ if ( !resM ) { sprintf(strMessage, "No motion detected" ); OnDraw_LogWindow(pDC, strMessage, set_window(3,3), 0); return; } else { // sprintf(strMessage, "Motion detected " ); // OnDraw_LogWindow(pDC, strMessage, set_window(3,3), 0); break; } } // A uzh kakoj iz nih m_face[f] use decide sam int nFaceSelected = nFace-1; // Load into a 0th face Selected Face / MUST PASS pPVS->m_imgBW image not Colour image !! pPVS->m_face[0].loadFace(&pPVS->m_imgBW, pPVS->m_fd.getLocationOfFace(nFaceSelected), nFaceRotation); frIds->loadVectorsFromFace(& pPVS->m_face[0]); // Maybe I should just : frIds->loadVectorsFromFace(&pPVS->m_imgBW, pPVS->m_fd.getLocationOfFace(nFaceSelected)); cvRectangle(pPVS->m_face[0].m_imgFaceDetected.getIplImage(), cvPoint( 2+a2i( frIds->m_sItoCrop[0] ),2+a2i( frIds->m_sItoCrop[1] ) ), cvPoint( 26-a2i( frIds->m_sItoCrop[2] ), 26-a2i( frIds->m_sItoCrop[3] ) ), 0xffffaa, 2 ); pPVS->m_face[0].m_imgFaceDetected.draw(pDC->m_hDC, set_window(0,1, 2*pPVS->m_face[0].m_imgFaceDetected.getWidth(),0,0)); if (!m_bTraceMode) { /* frIds->m_imgNewFace.draw(pDC->m_hDC, set_window(4,1, 24*3)); frIds->m_imgQueryFace.draw(pDC->m_hDC, set_window(4,1, 24*3, 1,0)); */ frIds->getSasImage(frIds->m_S, 0)->draw(pDC->m_hDC, set_window(1,1, 60)); frIds->getSasImage(frIds->m_S, 1)->draw(pDC->m_hDC, set_window(2,1, 60)); frIds->getSasImage(frIds->m_S, 2)->draw(pDC->m_hDC, set_window(3,1, 60)); frIds->getYasImage(frIds->m_Y, 0)->draw(pDC->m_hDC, set_window(1,1, 60, 1,0)); frIds->getYasImage(frIds->m_Y, 1)->draw(pDC->m_hDC, set_window(2,1, 60, 1,0)); frIds->getYasImage(frIds->m_Y, 2)->draw(pDC->m_hDC, set_window(3,1, 60, 1,0)); } pPVS->m_imgOut.draw(pDC->m_hDC, set_window(1,0), false, false); pPVS->m_chanColour.m_imbSkinYCrCb.draw(pDC->m_hDC, set_window(0,3)); pPVS->m_chanColour.m_imbSkinUCS.draw(pDC->m_hDC, set_window(1,3)); pPVS->m_chanMotion.m_imbFG.draw(pDC->m_hDC, set_window(2,3)); pPVS->m_chanMotion.m_imb_dI.draw(pDC->m_hDC, set_window(3,3)); // pPVS->m_chanMotion.m_imb_ddI.draw(pDC->m_hDC, set_window(4,3)); nNameTag = pDoc->m_gui.slider4;//-1; // ************************************************************************************************ if (!pDoc->m_gui.check_start) // It has to be checked to start the process return; //NB: frIds->m_pinn.m_dFade, frIds->m_pinn.m_D zadautsq by sliders; !!! frIds->m_pinn.m_D = 1.0; #if 1 // later // ************************************************************************************************ if (pDoc->m_gui.check1 == false) // memorize // ************************************************************************************************ { bool bStoreOnDisk = m_bTraceMode; // use every Nth frame if (pDoc->m_PVSystem.m_nFrame % (pDoc->m_gui.slider2+1) != 0) { sprintf(strMessage, "... skipped (%i/%i) ", pDoc->m_PVSystem.m_nFrame % (pDoc->m_gui.slider2+1), pDoc->m_gui.slider2+1); OnDraw_LogWindow(pDC, strMessage, set_window(0,1), 5); return; } // frIds->LoadID(nNameTag); frIds->setIDto1(nNameTag); int res = frIds->m_pinn.putInMemory(frIds->m_Y); //** // nn->MemorizeV_as(nNameTag); frIds->m_arrImgStoredFaces[frIds->m_nStoredFaces++ % FR_MAX_FACES].copy(&pPVS->m_face[0].m_imgFaceDetected); // if (m_bShowPINNwell ) { frIds->m_pinn.analyzeMemory(); sprintf(strMessage, "Brain model: N=%i D=%4.2f, C: %4.2f %4.2f %4.2f", frIds->m_pinn.m_N, frIds->m_pinn.m_D, frIds->m_pinn.m_dAveCii, frIds->m_pinn.m_dAveCij2, frIds->m_pinn.m_dAveAbsCij2); } /* else sprintf(strMessage, "Brain model: N=%i", frIds->m_pinn.m_N, frIds->m_pinn.m_D, frIds->m_pinn.m_dAveCii, frIds->m_pinn.m_dAveCij2, frIds->m_pinn.m_dAveAbsCij2); */ OnDraw_LogWindow(pDC, strMessage, set_window(2,0,2,0), 0); sprintf(strMessage,"Memorize: ID=%i, E:%.1f ", nNameTag, frIds->m_pinn.m_E); // %s, strNameTag, OnDraw_LogWindow(pDC, strMessage, set_window(2,0), 1); if (res==0) sprintf(strMessage, " similar face already memorized"); else sprintf(strMessage, " face memorized (#%i) ! ", frIds->m_pinn.m_M); // frIds->m_nStoredFaces-1); OnDraw_LogWindow(pDC,strMessage, set_window(2,0), 2); // for(int i=2;i<=20;i++) // OnDraw_LogWindow(pDC, " ", set_window(1,0,0,1), i+2); if ( (! pDoc->m_gui.check2) && (! pDoc->m_gui.check_nonstop )) // i.e. from video { // Uncheck checkbox (switch to recognition mode) CMainFrame *pMainFrm = (CMainFrame*)GetParentFrame(); CButton* check = (CButton*)((pMainFrm->GetDlgItem(IDD_DIALOGBAR1))->GetDlgItem(IDC_CHECK1)); check->SetCheck(BST_CHECKED); pDoc->m_gui.check1 = true; pMainFrm->UpdateData(FALSE); } } // ************************************************************************************************ else // recognize // ************************************************************************************************ { // frIds->m_imgQueryFace.draw(pDC->m_hDC, set_window(0,1)); // OnDraw_LogWindow(pDC, "Stimulus", set_window(0,1), 0); // move this line to memorization! Nope... it does not work this way... frIds->m_pinn.setMemoryToDormantState(); // Influence of past history // for(int k=0; k<pDoc->nLastFrameIDs; k++) // frIds->setIDto1(pDoc->nLastFrameID[k]); // this is too much influence/ //** we should //** frIds->setYofID(pDoc->nLastFrameID[k], 0.15); frIds->m_pinn.retrieveFromMemory(frIds->m_Y, &frIds->m_Y); // frIds->m_pinn.retrieveFromMemory(); nNameTag = 0; char word[5][100], strY[100]="", strS[100]=" "; int nPosY=0; strcpy(word[4],""); pDoc->nLastFrameIDs=0; for(int i=0; i<frIds->m_nIDs; i++) { int nY = frIds->getYofID(i); // sprintf (word[1], "%+1i", (i+1)*nY); if (nY > 0) { sprintf (word[1], "1 ", (i+1)*nY); sprintf (word[2], "*%2.0f", (frIds->getSofID(i))*10); // nPosY++; pDoc->nLastFrameID[ pDoc->nLastFrameIDs++ ] = i; sprintf (word[3], "%i ", i); strcat(word[4], word[3]); } else { sprintf (word[1], "_ ", (i+1)*nY); // sprintf (word[2], " "); sprintf (word[2], " %2.0f", ((-1)*frIds->getSofID(i))*10); } strcat(strY, word[1]); strcat(strS, word[2]); } OnDraw_LogWindow(pDC, word[4], set_window(0,0), 0); sprintf(strMessage, "Neural response: %s ",word[4]); OnDraw_LogWindow(pDC, strMessage, set_window(1,0), 0); sprintf(strMessage, " It=%i, E=%3.0f ", frIds->m_pinn.m_nIter, frIds->m_pinn.m_E); OnDraw_LogWindow(pDC, strMessage, set_window(1,0), 1); // OnDraw_LogWindow(pDC, strY, set_window(1,0), 1); // OnDraw_LogWindow(pDC, strS, set_window(3,3,1,0), 1); int nStack= pDoc->m_gui.slider1+1; /* for(i=0;i<nStack;i++) { strcpy(pDoc->sStackY[i],""); strcpy(pDoc->sStackS[i],""); } */ strcpy(pDoc->sStackY[nStack],strY); strcpy(pDoc->sStackS[nStack],strS); // nNameTag !!!!!!!!!!! decode and display! int nResConsistent=0; // int nTagOverTime = nNameTag; // char sTags[30]; // char sTagsNum[11]; // int nIDs=0; for(i=1;i<=nStack;i++) { // if (pDoc->nStack[i-1]==pDoc->nStack[i]) // nBestMatch) // nResConsistent ++; pDoc->nStack[i-1]=pDoc->nStack[i]; strcpy(pDoc->sStackY[i-1],pDoc->sStackY[i]); strcpy(pDoc->sStackS[i-1],pDoc->sStackS[i]); sprintf(strMessage, "%s ", pDoc->sStackY[i-1]); // pDoc->nStack[i-1]); OnDraw_LogWindow(pDC, strMessage, set_window(1,0), i+1); if (m_bShowPINNwell ) { sprintf(strMessage, "%s ", pDoc->sStackS[i]); // pDoc->nStack[i-1]); OnDraw_LogWindow(pDC, strMessage, set_window(2,0), i+1); } } for(i;i<=20;i++) { OnDraw_LogWindow(pDC, " ", set_window(1,0), i+1); OnDraw_LogWindow(pDC, " ", set_window(2,0), i+1); } // if (m_bTraceMode) { frIds->getSasImage(frIds->m_pinn.m_S, 0)->draw(pDC->m_hDC, set_window(1,1, 24*3, 0,1)); frIds->getSasImage(frIds->m_pinn.m_S, 1)->draw(pDC->m_hDC, set_window(2,1, 24*3, 0,1)); frIds->getSasImage(frIds->m_pinn.m_S, 2)->draw(pDC->m_hDC, set_window(3,1, 24*3, 0,1)); frIds->getYasImage(frIds->m_Y, 0)->draw(pDC->m_hDC, set_window(1,1, 24*3, 1,1)); frIds->getYasImage(frIds->m_Y, 1)->draw(pDC->m_hDC, set_window(2,1, 24*3, 1,1)); frIds->getYasImage(frIds->m_Y, 2)->draw(pDC->m_hDC, set_window(3,1, 24*3, 1,1)); } } // end of recognition #endif // ************************************************************************************************ // end of memorization/recognition // ************************************************************************************************ // ************************************************************************************************ pDoc->m_bWorkWithFiles = false; if (m_bTraceMode == true && pDoc->m_gui.check2) // if scenario, wait to continue // AfxMessageBox("Next", MB_OK); if (MessageBox("Proceed to next face?",NULL,MB_OKCANCEL) != IDOK) exit(1); // strcpy(pDoc->m_input.strFile1,""); }