/* Do not fret, for it is merely a wonderful gcc extension. */
case 'A'...'Z':
case 'a'...'z':
case '0'...'9':
범위를 지정해서 그사이에 있는 경우까지 포함시키는 정규식??
하지만!! gcc에서만 된다는거..-_ㅡ;;
VS6.0 에서 테스트 해보니 모르는 표현이라고 뭐라 하네..
Tag | gcc
/* Do not fret, for it is merely a wonderful gcc extension. */
case 'A'...'Z':
case 'a'...'z':
case '0'...'9':
범위를 지정해서 그사이에 있는 경우까지 포함시키는 정규식??
하지만!! gcc에서만 된다는거..-_ㅡ;;
VS6.0 에서 테스트 해보니 모르는 표현이라고 뭐라 하네..
1. RTP & RTSP connection
2. RTP
실시간 Application 을 위한 종단 간 네트워크 전송 기능 제공.
실시간 세션에 관한 정보가 포함되어 있으므로 Application은 지터 잘못된 패킷 순서 및 삭제된 패킷을 쉽게 조정 가능.
자원예약이 없으므로 서비스 품질 보장 없음.
맞춤형 프로토콜 - 헤더를 Application 에 따라 변경가능하다.
UDP/IP 로 패킷을 전송한다. Payload 부분에 멀티미디어 데이터가 포함된다.
3. RTCP
RTP 와 결합하여 작동하는 제어 프로토콜로써 동작한다.
데이터 품질에 대한 피드백과 맴버쉽정보를 전달한다..
패킷손실률, 지터, 라운드트립 지연등.
이를 바탕으로 흐름제어, 에러제어등을 수행할 수 있다.
4. RTSP
미디어 플레이어가 매체 스트림의 전송을 제어 할 수 있는 프로토콜.
실시간 멀티미디어 데이터 저송제어로써 HTTP 의 확장.
실제 데이터를 전송하지는 않는다.
네트워크 원격제어 역할을 수행한다.
UDP나 TCP 상으로 전송될 수 있다.
5. RTSP 흐름도
이 글은 스프링노트에서 작성되었습니다.
/*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - 콘트롤 - //////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ //---List Box / file Dir Dlg-------------------------------------------------------- //---------------------------------------------------------------------------- // 폴더 얻기 char szTemp[255]; memset(szTemp, 0, 255); lstrcat(szTemp, "c:\\Data"); CDialog::DlgDirList(szTemp, IDC_LISTBOX, NULL, DDL_EXCLUSIVE | DDL_DIRECTORY); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- //화일명 얻기 CString Path_Log="C:\\WaterSensor성능검사기\\Data\\"; CString ss=""; CString tt=""; tt="*.mdb"; ss =Path_Log+"*.mdb"; char szTemp[255]; memset(szTemp, 0, 255); lstrcat(szTemp, ss); CDialog::DlgDirList(szTemp, IDC_SLOG_LIST, NULL, NULL);// DDL_EXCLUSIVE | DDL_DIRECTORY); int nList=0; CString csTmp=""; sLog.SetCurSel(nList); /* if(sLog.GetTextLen(nList)>0) { sLog.GetText(nList ,csTmp); if( FileExists(Path_Log+csTmp)) { ss=LoadReadFile(Path_Log+csTmp); LogDisplay(ss); } } */ //============================================================================== //---다른 Label 콘트롤(Threed32 Panel) Control 상속 얻기 ----------------------- #include "sspnctrl.h" CSSPNCtrl *Static; Static = (CSSPNCtrl *)GetDlgItem(IDC_IO_0); Static->SetBackColor(0x0000ff); //BGR void CAttachMachineView::Sub_SetDlgItemColor(int nID, COLORREF CColor) { CSSPNCtrl *Static; Static = (CSSPNCtrl *)GetDlgItem(IDC_IO_0); Static->SetBackColor(CColor); } CSSPNCtrl *Static; Static = (CSSPNCtrl *)GetDlgItem(IDC_EXIT_WAITE_MESSAGE); Static->ShowWindow(true); #include "LabelControl.h" ((CLabelControl*)GetDlgItem(nID))->SetBackColor(OK_COLOR); //---Control 상속 보이기-------------------------------------------------------- CButton *pBtn; pBtn = (CButton *)GetDlgItem(IDC_CLOSE_BTN); pBtn->ShowWindow(true); Static = (CStatic *)GetDlgItem(IDC_CAM_NAME); Static->ShowWindow(true); //---Control 이벤트-------------------------------------------------------- .h //{{AFX_MSG(CImageViewView) afx_msg bool OnClickImageView(UINT nID); //}}AFX_MSG DECLARE_MESSAGE_MAP() .cpp BEGIN_MESSAGE_MAP(CImageViewView, CFormView) //{{AFX_MSG_MAP(CImageViewView) ON_COMMAND_RANGE(IDC_IMG_VIEW1, IDC_IMG_VIEW4, OnClickImageView) END_MESSAGE_MAP() bool CImageViewView::OnClickImageView(UINT nID) { CString csTmp; csTmp.Format("%d",nID); AfxMessageBox(csTmp); return true; } #define OK_COLOR RGB(100,150,255) #define NG_COLOR RGB(235,60,60) COLORREF clLime; //--Inage List BOOL bRetValue = FALSE; HICON hIcon = NULL; // m_CurLibType = m_SelLibrary = m_SleLibType = LINE2RECT; SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); // Create image list bRetValue = m_ImageList.Create(80, 80, ILC_COLOR32 | ILC_MASK, 5, 1); ASSERT(bRetValue == TRUE); // Add some icons hIcon = AfxGetApp()->LoadIcon(IDI_ICON_MARK); m_ImageList.Add(hIcon); m_lbxListBox.SetImageList(&m_ImageList); //--CShadeButton------------------------------------------------------ #include "ShadeButtonST.h" .h -- CShadeButtonST m_btnXYOrg; ..cpp DDX_Control(pDX,IDC_BTN_XYORG,m_btnXYOrg); //IDC_BTN_XYORG 푸시 버튼 ..OnInitDialog() //COLORREF crBtnColor; //crBtnColor = ::GetSysColor(COLOR_ACTIVEBORDER) + RGB(100, 50, 50); m_btnXYOrg.SetShade(CShadeButtonST::SHS_HBUMP); //------- m_btnXYOrg.SetShade(CShadeButtonST::SHS_HSHADE); m_btnXYOrg.Invalidate(); m_btnXYOrg.SetShade(CShadeButtonST::SHS_HSHADE,8,10,30,RGB(100,55,0)); //--CLabelControl-------------------------------------------------- CLabelControl *pLabel; for(int i=0; i<MAX_ONE_BD-2; i++)//0-5 Label1 - Label6 { pLabel = (CLabelControl *)GetDlgItem(IDC_LABEL1+i); pLabel->SetEnabled(FALSE); } //Label7 ID가 순서대로가 아님 pLabel = (CLabelControl *)GetDlgItem(IDC_LABEL7); pLabel->SetEnabled(FALSE); CComboBox *pcbo; pcbo = (CComboBox *)GetDlgItem(IDC_COMBO_SELECT_AXIS); m_SelectAxisNo = pcbo->SetCurSel(0); pcbo = (CComboBox *)GetDlgItem(IDC_COMBO_SELECT_MODE); m_SelectAxisMode= pcbo->SetCurSel(0); pcbo->EnableWindow(false); CStatic *Static; Static = (CStatic *)GetDlgItem(IDC_STATIC_AXIS_MODE); Static->EnableWindow(false);//Static->ShowWindow(false); CButton *pchk; pchk = (CButton *)GetDlgItem(IDC_RADIO_MMCBOARD1); pchk->SetCheck(TRUE); // Axis One Select LED Status m_ledOpSelect1.SetValue(false); m_ledOpSelect2.SetValue(false);m_ledOpSelect3.SetValue(true); /*------Combo Box---------------------------------------------------*/ CComboBox *pcbo2; pcbo2 = (CComboBox *)GetDlgItem(IDC_COMBO_SELECT_MODE); m_SelectAxisMode = pcbo2->SetCurSel(0); /*------이벤트 얻기---------------------------------------------------*/ BOOL CManualMotorPage::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class int ret; CLabelControl *plbl; if(pMsg->message == WM_LBUTTONDOWN){ for(int i=0;i<MAX_AXIS;i++){ plbl = (CLabelControl *)GetDlgItem(IDC_LBL_AXIS_X+i); if(pMsg->hwnd == plbl->m_hWnd){ return TRUE; } } } } return CPropertyPage::PreTranslateMessage(pMsg); } /*------Icon---------------------------------------------------*/ HICON m_hIconOnOff[2]; m_hIconOnOff[0] = AfxGetApp()->LoadIcon(IDI_OFF); m_hIconOnOff[1] = AfxGetApp()->LoadIcon(IDI_ON); CStatic *icon; icon = (CStatic *)GetDlgItem(IDC_PIC_LED1); icon->SetIcon(m_hIconOnOff[0]); /*------Button Enable-----------------------------------------------------*/ CButton *opBtn; opBtn=(CButton *)GetDlgItem(IDC_BTN_START); opBtn->EnableWindow(FALSE); CCommandButton *origBtn; origBtn=(CCommandButton *)GetDlgItem(IDC_CMD_ORIG_START); origBtn->SetEnabled(FALSE); /*------Microsoft Form2.0 Check Box Set------------------------------------*/ // void SetValue(VARIANT* newValue); void SetValue( BOOL newValue); // VARIANT GetValue(); BOOL GetValue(); void CMdcCheckBox::SetValue(BOOL newValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); } BOOL CMdcCheckBox::GetValue() { BOOL result; InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } CMdcCheckBox *pchk; pchk = (CMdcCheckBox *)GetDlgItem(IDC_CHECKBOX1); pchk->SetValue(true); CMdcCheckBox *pchk; pchk = (CMdcCheckBox *)GetDlgItem(IDC_CHECKBOX1); if(pchk->GetValue())AfxMessageBox("on"); else AfxMessageBox("off"); /*------Radio Button Set---------------------------------------------------*/ CButton *pchk; pchk = (CButton *)GetDlgItem(IDC_RADIO_NONE); pchk->SetCheck(FALSE); pchk = (CButton *)GetDlgItem(IDC_RADIO_SPLIT); pchk->SetCheck(TRUE); /*------------------------------------------------------------------------*/ /*------어레이 이벤트 발생 설정 ------------------------------------------*/ ..h protected: //}}AFX_MSG afx_msg void OnChangeTray(UINT nID); DECLARE_MESSAGE_MAP() ..cpp BEGIN_MESSAGE_MAP(CPreMountDataPage, CPropertyPage) //}}AFX_MSG_MAP ON_COMMAND_RANGE(IDC_RADIO_TRAY1, IDC_RADIO_TRAY4, OnChangeTray) END_MESSAGE_MAP() void CPreMountDataPage::OnChangeTray( UINT nID ) { CLabelControl *label; UpdateData(TRUE); m_nTrayNo = nID - IDC_RADIO_TRAY1; } /*------Gride Scroll-----------------------------------------------------*/ m_MSFlexGrid.SetScrollTrack(true); /*------Icon 불러오기-----------------------------------------------------*/ IDC_PIC_LED1 : Picture Properties, Type -Icon HICON m_hIconOnOff[2]; m_hIconOnOff[0] = AfxGetApp()->LoadIcon(IDI_OFF); m_hIconOnOff[1] = AfxGetApp()->LoadIcon(IDI_ON); CStatic *icon; for(int i=0; i<9; i++) { icon = (CStatic *)GetDlgItem(IDC_PIC_LED1 + i); icon->SetIcon(m_hIconOnOff[0]); } /*------다중 콘트롤 ID 지정 및 얻기----------------------------------------*/ DeviceCheckView.h 화일 //}}AFX_MSG DECLARE_MESSAGE_MAP() afx_msg void OnChangeIoNo( UINT nID ); //----- DeviceCheckView.cpp 화일 void CDeviceCheckView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDeviceCheckView) DDX_Radio(pDX, IDC_IONO1, m_nioNo); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDeviceCheckView, CFormView) //{{AFX_MSG_MAP(CDeviceCheckView) ON_WM_TIMER() //}}AFX_MSG_MAP ON_COMMAND_RANGE(IDC_IONO1, IDC_IONO6, OnChangeIoNo) END_MESSAGE_MAP() void CDeviceCheckView::OnChangeIoNo( UINT nID ) { m_nioNo = nID - IDC_IONO1; } /*------콘트롤 ID 지정 및 얻기---------------------------------------------*/ //-------------------------------------------------------------------------- ON_EVENT(CIODisplay, IDC_OUT_T0, -600 /* Click */, OnClickOutBtn, VTS_NONE) ON_EVENT(CIODisplay, IDC_OUT_T1, -600 /* Click */, OnClickOutBtn, VTS_NONE) ON_EVENT(CIODisplay, IDC_OUT_T2, -600 /* Click */, OnClickOutBtn, VTS_NONE) void CIODisplay::OnClickOutBtn() { int id = GetFocus()->GetDlgCtrlID() - IDC_OUT_T0; } //-------------------------------------------------------------------------- /*------상속받아 콘트롤변수지정---------------------------------------------*/ #include "xShadeButton.h" #include "SXButton.h" DDX_Control(pDX, IDC_ESTOP, m_EStop); m_EStop.SetIcon( IDI_ESTOP, 32, 32 ); m_EStop.SetImagePos( CPoint ( 2, SXBUTTON_CENTER ) ); m_EStop.SetTextPos( CPoint ( 28, SXBUTTON_CENTER ) ); m_EStop.SetFont(&m_sFont); /*------상속받아 콘트롤 설정 ---------------------------------------------*/ #include "EditEx.h" CEditEx m_CmdPos[2]; m_CmdPos[0].SubclassDlgItem(IDC_CMD_POS0, this); m_CmdPos[0].bkColor( BLACK ); m_CmdPos[0].textColor( YELLOW ); m_CmdPos[0].setFont( 10, FW_ULTRABOLD, DEFAULT_PITCH | FF_DONTCARE, _T("궁서")); m_CmdPos[0].SetWindowText("0.000"); SetDlgItemDouble(IDC_CMD_POS0, cmd_pos[0]); // 지정한 컨트롤에 값을 보여준다. void CCAMCFS20Dlg::SetDlgItemDouble(int nID, double value) { CString sTemp; sTemp.Format("%.3f", value); GetDlgItem(nID)->SetWindowText(sTemp); } // 지정한 컨트롤에서 값을 읽어온다. double CCAMCFS20Dlg::GetDlgItemDouble(int nID) { double dRet; CString sTemp; GetDlgItem(nID)->GetWindowText(sTemp); dRet = atof((LPCTSTR)sTemp); return dRet; } /*------EnableWindow--------------------------------------------------------*/ EnableWindow(GetDlgItem(m_hDlg,IDC_BTN_START),FALSE); EnableWindow(GetDlgItem(m_hDlg,IDC_BTN_STOP),TRUE); char szBuf[256]; SetDlgItemText(m_hDlg, IDC_MSG, "Server Running"); GetDlgItemText(m_hDlg,IDC_LISTEN_EDIT,szBuf,256); int iPort = atoi(szBuf); memset(szBuf,0,256); /*------EDIT CONTROL--------------------------------------------------------*/ void CWinDlg::WriteText(char* szData) { HWND hWndOutput; int iChar; hWndOutput = GetDlgItem(m_hDlg, IDC_EDIT_BOARD); iChar = SendMessage(hWndOutput, EM_GETLIMITTEXT, 0, 0); SendMessage(hWndOutput, EM_SETSEL, iChar, iChar); SendMessage(hWndOutput, EM_REPLACESEL, FALSE, (LPARAM)szData); SendMessage(hWndOutput, EM_REPLACESEL, FALSE, (LPARAM)"\r\n"); } /*------Control Key--------------------------------------------------------*/ #define VK_NUMLOCK 0x90 #define VK_SCROLL 0x91 KeyCode=GetKeyState(VK_CONTROL); if((KeyCode==CONTROLKEY1)||(KeyCode==CONTROLKEY2)){bConKey=TRUE;} /*------Read Only----------------------------------------------------------*/ m_FileSaveAsButton[nCh].EnableWindow(FALSE); m_ItemSelectCombo[nCh].EnableWindow(nMode); m_SetRevCheckBox[nCh].EnableWindow(nMode); m_TestViasstatic[nCh].SetReadOnly(nMode); /*------Slider------------------------------------------------------------*/ m_SpotTopSlider.GetPos();//일반 // m_SpotLeftSlider.SetRange(0, 1024);//일반 m_SpotLeftSlider.SetValue(140); //NI 콘트롤 void CGraphResultPage3::OnPointerValueChangedSpotBottomSlider(long Pointer, VARIANT FAR* Value) { // TODO: Add your control notification handler code here int nData=0; nData = CNiVariant(Value);m_nSpotBottomLimit=nData; } /*------Message------------------------------------------------------------*/ // MessageBox(NULL,buf,title,MB_OK|MB_ICONEXCLAMATION); // if (MessageBox("Module Aging Program Quit? ", " OLED Module Aging Program", // /*MB_ICONQUESTION*/MB_ICONSTOP | MB_OKCANCEL) == IDOK) { // OnClose(); // PostQuitMessage(0); // } RedrawWindow();//Invalidate(FALSE); /*------ 콘트롤 Bmp-------------------------------------------------------------------*/ CBitmap m_ButtonBmp1; m_ButtonBmp1.LoadBitmap(IDB_SAVEBUTTONBMP); m_FileSaveAsButton[0].SetBitmap(m_ButtonBmp1); RedrawWindow();//Invalidate(FALSE); /*------ 콘트롤 Enable----------------------------------------------------------------*/ m_ccEdit1.SetReadOnly(TRUE); m_ccButton1.EnableWindow(TRUE); m_ccModeCheck1.ShowWindow(SW_SHOW); m_ccModeCheck2.ShowWindow(SW_HIDE); /*------------------------------------------------------------------------------------*/ /*------CT 콘트롤 제어----------------------------------------------------------------*/ m_cttPosition11.SetBackColor(RGB(255,0,0)); m_cttPosition11.SetForeColor(RGB(255,0,0)); m_cttPosition11.SetCaption("-120.000"); m_cttPosition11.ShowWindow(FALSE); /*------NI 콘트롤 숨김----------------------------------------------------------------*/ m_nctlTestButton1.ShowWindow(FALSE);//숨김 /*------NI Graph----------------------------------------------------------------*/ m_ResultLineGraph1.GetAxes().Item(3.0).GetTicks().SetMajorTickColor(White); m_ResultLineGraph1.GetPlots().Item(2.0).SetLineColor(White); m_ResultLineGraph1.GetAxes().Item(1).GetLabels().SetColor(White); m_ResultLineGraph1.GetAxes().Item(1).AutoScaleNow(); m_ResultLineGraph1.GetAxes().Item(2).AutoScaleNow(); m_ResultLineGraph1.GetAxes().Item(1).SetMinMax(m_GraphScaleMin_x,m_GraphScaleMax_x); m_ResultLineGraph1.GetAxes().Item(2).SetMinMax(m_GraphScaleMin_y,m_GraphScaleMax_y); //================================================================================== /*------DlgList [..][]------------------------------------------------------------*/ char szTemp[255]; memset(szTemp, 0, 255); lstrcat(szTemp, "c:\\Data"); CDialog::DlgDirList(szTemp, IDC_LISTBOX, NULL, DDL_EXCLUSIVE | DDL_DIRECTORY); /*----------------------------------List Box Text 얻기----------------------------*/ //================================================================================= CString strTmp=""; int nListNo=m_ccName.GetCurSel(); if(m_ccName.GetTextLen(nListNo)>0) { m_ccName.GetText(nListNo,strTmp); } m_ccModuleMeasureList.InsertString(nListNo,csFind); nListNo=m_ccImageList.GetCurSel(); CString csFind;m_ccImageList.GetText(nListNo,csFind); nListNo=m_ccModuleMeasureList.GetCurSel(); m_ccModuleMeasureList.DeleteString(nListNo); m_ccModuleMeasureList.InsertString(nListNo,csFind); int nListMax=flBox.GetCount(); csTmp.Format("%d",nListMax); AfxMessageBox(csTmp); //================================================================================== /*----------------------------------Multi Edit 한줄씩 얻기----------------------------*/ CString ReadData; CString strTmp=""; GetDlgItemText(IDC_INSTRUCT_EDIT, ReadData); int index=0; int length=0; char chBuf[2]; length = ReadData.GetLength(); int nListCount=0; CString csLineData[CHMAX]; CString csBuf=_T(""); for(int i=0; i<length; i++) { csBuf=ReadData.Mid(i,1); if(csBuf=="\n") { csBuf=""; nListCount++; } else { if(csBuf!="\r") { chBuf[0]=csBuf.GetAt(0); chBuf[1]='\0'; csLineData[nListCount]+=chBuf; } } } for(int n=0; n<nListCount+1; n++) AfxMessageBox(csLineData[n]); /*----------------------------------콘트롤 생성-------------------------------------*/ // CComboBox m_pComboBox[CHMAX]; // CEdit m_pEditBox[CHMAX]; // CListBox m_pListBox[CHMAX]; // CButton m_pButton[CHMAX]; WS_THICKFRAME 콘트롤 크기 가변 RECT ovlScrRect; m_Display.GetWindowRect(&ovlScrRect); ::CopyRect(&OverlayClientRect,&ovlScrRect); ScreenToClient(&OverlayClientRect); pVision->OutputOverlay(GetDC()->m_hDC,&ovlScrRect); UpdateOverlayWindow(); /* CStatic *m_static; m_static = new CStatic; m_static->Create(_T("스태틱"), WS_VISIBLE | SS_CENTER, CRect(10,10,210,40), this, ID_SAMPLE_STATIC1); */ //리스트 박스 만들기 RECT rect1={10,100,200,200}; m_pListBox.Create(WS_CHILD | WS_VISIBLE | LBS_STANDARD,rect1,this,200); m_pListBox.ShowWindow(SW_SHOW); //데이터 삽입 m_pListBox.AddString("data1"); m_pListBox.AddString("data2"); m_pListBox.AddString("data3"); //에디터 박스 만들기 RECT rect2={210,10,400,100}; m_pEditBox.Create( WS_CHILD | WS_VISIBLE | ES_MULTILINE //여러 라인 입력 | ES_AUTOHSCROLL | ES_AUTOVSCROLL| //자동 수직,수평 스크롤 WS_BORDER |WS_VSCROLL,//외곽선과 수직 수크롤바 설정 rect2,this,300); m_pEditBox.ShowWindow(SW_SHOW); //콤보박스 만들기 RECT rect3={210,200,400,300};//콤보박스 출력 위치 //윈도우 만들기 m_pComboBox.Create(WS_CHILD | WS_VISIBLE|CBS_DROPDOWN ,rect3,this,400); m_pComboBox.ShowWindow(SW_SHOW); //콤보박스에 데이터를 넣는다. m_pComboBox.AddString("cdata1"); m_pComboBox.AddString("cdata2"); m_pComboBox.AddString("cdata3"); /*------KeyBoadData------------------------------------------------------------------*/ void CTESTView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default CString csText=_T(""); csText=nChar; AfxMessageBox(csText); CFormView::OnChar(nChar, nRepCnt, nFlags); } /*------SendDlgItemMessage------------------------------------------------------------*/ SendDlgItemMessage(IDC_STATIC_WLREM, WM_SETTEXT,0,(LPARAM)(LPSTR)"DATA NONE"); /*-------라디오버튼-------Radio button------------------------------------------------*/ //------------------------------------------------------------------------------------- tmModel.PCBType = (rbSata.GetCheck()?0:1); tmModel.Rotate = (rbRetn.GetCheck()?false:true); tmModel.ScrewCheck = (rbNChk.GetCheck()?false:true); tmModel.ScrewType = (rbTyp1.GetCheck()?0:1); m_Select11.SetCheck(TRUE); m_Select11.SetCheck(FALSE); m_ccModeCheck3.SetWindowText("Photo(uA)"); radio button 변수 생성시 Gruop 지정 0 : on -1 : off CNiPlot3D::PlotStyles style=m_Graph3D.GetPlots().Item(1).GetStyle(); m_Point.SetCheck((style == CNiPlot3D::PlotStyles::Point)? 1 : 0); m_Line.SetCheck((style == CNiPlot3D::PlotStyles::Line)? 1 : 0); m_LinePoint.SetCheck((style == CNiPlot3D::PlotStyles::LinePoint)? 1 : 0); /*------------List Box 변수 선언 대입------------------------------------------------*/ CListBox m_ListBox[4]; m_ListBox[0].SubclassDlgItem(IDC_LIST1, this); m_ListBox[1].SubclassDlgItem(IDC_LIST2, this); m_ListBox[2].SubclassDlgItem(IDC_LIST3, this); m_ListBox[3].SubclassDlgItem(IDC_LIST4, this); m_ListBox[i].EnableWindow(FALSE); m_ListBox[port-1].AddString(m_strReceived[port-1]); m_ListBox[port-1].SetSel(m_ListBox[port-1].GetCount()-1, TRUE); m_ListBox[0].ResetContent();//clear m_ccModuleMeasureList.InsertString(nListNo,csFind); //---List Control 빈문자 에러방지--------------------------------------------------- if(m_ccName.GetCount()>0) { m_ccName.SetCurSel(m_nListCurrentNo); if(m_ccName.GetTextLen(m_ccName.GetCurSel())>0) { m_ccName.GetText(m_ccName.GetCurSel(),strTmp); m_csName=strTmp; } else { m_csName=_T(""); } strTmp.Format("%d / %d", m_nListCurrentNo, m_nListMaxCount); SetDlgItemText(IDC_PAGEMODEL, strTmp); } // m_ccModule_A_JobList.SetItemHeight(nListMaxCount,LISTHIGH2);//넓게 표시 /*----------------------------Check Box On/Off제어---------------------------------*/ m_ccCheck.SetCheck(TRUE);//ON m_ccCheck.SetCheck(FALSE);//OFF /*----------------------------------커서 활성-------------------------------------*/ m_clbName.SetFocus(); /*----------------------------------콘트롤 보이기 숨기기--------------------------*/ m_TestButton.ShowWindow(SW_HIDE);//(FALSE) m_TestButton.ShowWindow(SW_SHOW);//(TRUE) /*------------콘트롤 생성--------------------------------------------------------*/ public: CListBox m_pListBox; RECT rect={10,100,200,200}; m_pListBox.Create(WS_CHILD|WS_VISIBLE|LBS_STANDARD,rect,this,200); m_pListBox.ShowWindow(SW_SHOW); m_pListBox.AddString("data1"); m_pListBox.AddString("data2"); m_pListBox.AddString("data3"); // m_ccName.GetText(m_ccName.GetCurSel(),strTmp); /*------------콤보BOX Text제어--------------------------------------------------*/ CString csTmp; int nNo=m_ccPalletSelect.GetCurSel(); m_ccPalletSelect.GetLBText(nNo,csTmp); AfxMessageBox(csTmp); for(i=0; i<10; i++) { m_ccCombo.DeleteString(i); csText.Format("%dH:",i); m_ccCombo.InsertString(i,csText); } /*------List Control-------------------------------------------------------------*/ CString csTmp; m_ccNameList.AddString("DATA 1"); m_ccNameList.SetCurSel(0); m_ccNameList.GetText(m_ccNameList.GetCurSel(),csTmp); if(m_cliItemName.GetTextLen(m_cliItemName.GetCurSel())>0) { m_cliItemName.GetText(m_cliItemName.GetCurSel(),csTmp); m_csItemName=csTmp; } for(i=m_ccName.GetCount()-1;i>=0;i--) {m_ccName.DeleteString(i);} if(m_cliItemName.GetCount()>0) { if(m_cliItemName.GetTextLen(m_nCurrentModelNo-1)>0) { m_cliItemName.GetText(m_nCurrentModelNo-1,strTmp); } SearchModelItemName(strTmp, false); } /*--------------------Edit-> 리스트Box로 사용-----------------------------------*/ void CFOOLPROOFView::Status_display(CString sdisplay) { //Edit -Control if ( m_ComDisplay.GetLineCount() > 5) { m_ComDisplay.SetSel(0, -1); m_ComDisplay.Clear(); } sdisplay+="\r\n"; m_ComDisplay.ReplaceSel(sdisplay); /*--------------------Edit-> 커서 생성-----------------------------------------*/ m_clbEdit.SetFocus(); } //-------------Edit->GetWindowText----------------------------------------------------// //-----------------------------------------------------------------------------------// //--unsigned char-> CString , unsigned char-> char---------------------------------- int Length= m_ccEdit1.GetWindowTextLength(); unsigned char *temp = NULL; temp = new unsigned char [Length]; char temp2[2]; CString csText; m_ccEdit1.GetWindowText((LPSTR)temp,255); for(int i=0; i<Length; i++) { temp2[0]=temp[i]; temp2[1]='\0'; csText+=(LPSTR)temp2; } AfxMessageBox(csText); //---------------------------------------------------- char temp[255]; for(int i=0; i<255; i++) temp[i]='\0'; GetDlgItemText(IDC_EDIT1,(LPSTR)temp,255); GetDlgItemText(IDC_EDIT1,(char*)temp,255); CString csText=(LPSTR)temp; AfxMessageBox(csText); //-----------------------------------------------------------------------------------// /*-------------Control에 고유번호 부여 호출-----------------------------------*/ CString Buf; CString data; CString BufSET; int No=1001; /*Resource.h -#define IDC_EDIT 1001 */ int No2=1004; data="A1입니다"; SetDlgItemText(No,data); GetDlgItemText(No2,BufSET); AfxMessageBox(BufSET); UpdateData(FALSE); /*----------------콘트롤에서 직접 text 얻기----------------------------------*/ GetDlgItemText(IDC_SELECT_NAME_SCHOOL_YEAR1, csName); SetDlgItemText(IDC_PAGEMODEL, strText); //=========================================== CString strRX, strRY; CStatic *pRX, *pRY; pRX = (CStatic *)GetDlgItem(IDC_LBL_RESULTX); pRY = (CStatic *)GetDlgItem(IDC_LBL_RESULTY); pRX->GetWindowText(strRX); pRY->GetWindowText(strRY); /*------------------------FluxGrid 텍스트 중앙위치---------------------------*/ m_GridData.SetCellAlignment(4); /*-------------------StatusBar, 상태바---------------------------------------*/ void CMainFrame::DisplayMessage(CPoint point) { CString msg; msg.Format("마우스 위치 : (%d, %d)", point.x, point.y); m_wndStatusBar.SetWindowText(msg); CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); CRect rc; pFrame->m_wndStatusBar.GetItemRect (0, rc); pFrame->m_wndStatusBar.SetWindowText(csMsg); } /*-------------------ProgressBar----------------------------------------------*/ // ProgressBar표시를 위한 부분 CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); pFrame->m_pProgressBar.SetRange(0, height-tHeight); pFrame->m_pProgressBar.SetStep(1); CRect rc; pFrame->pStatusBar->GetItemRect (0, rc); pFrame->m_pProgressBar.MoveWindow(&rc); pFrame->m_pProgressBar.StepIt(); //---------------------------------------------------------------------------*/ void CColorView::OnMouseMove(UINT nFlags, CPoint point) { //#include "MainFrm.h" CMainFrame *pWnd = (CMainFrame*) AfxGetMainWnd(); pWnd->DisplayMessage(point); CView::OnMouseMove(nFlags, point) } /*------------------------------SPIN Button 범위 지정--------------------*/ 1-12 까지 범위지정 void CDBdeleteDlg::OnDeltaposMonthStartSpin(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // TODO: Add your control notification handler code here UpdateData(TRUE); pNMUpDown->iPos = 0; m_MonthStartEdit -= (pNMUpDown->iDelta); if (m_MonthStartEdit<1) { m_MonthStartEdit = 1; } else if (m_MonthStartEdit>12) { m_MonthStartEdit = 1; } UpdateData(FALSE); *pResult = 0; } /*------------------------------콘트롤 화면 확장 --------------------*/ void CModel::ExpandyaContract() { CRect rcDlg, rcMarker; GetWindowRect(rcDlg); if (!m_bExpanded) { m_nExpandedWidth = rcDlg.Width(); m_Devide.GetWindowRect(rcMarker); m_nNormalWidth = (rcMarker.right - rcDlg.left); rcDlg.SetRect(rcDlg.left, rcDlg.top, rcDlg.left + m_nNormalWidth+12, rcDlg.top + rcDlg.Height()); HWND hWndChild = ::GetDlgItem(m_hWnd, IDC_STATIC_DEVIDE); while (hWndChild != NULL) { hWndChild = ::GetNextWindow(hWndChild, GW_HWNDNEXT); ::EnableWindow(hWndChild, m_bExpanded); } } else { rcDlg.SetRect( rcDlg.left, rcDlg.top, rcDlg.left + + m_nExpandedWidth, rcDlg.top + rcDlg.Height() ); HWND hWndChild = ::GetDlgItem(m_hWnd, IDC_STATIC_DEVIDE); while (hWndChild != NULL) { hWndChild = ::GetNextWindow(hWndChild, GW_HWNDNEXT); ::EnableWindow(hWndChild, m_bExpanded); } } MoveWindow(rcDlg, TRUE); m_bExpanded = !m_bExpanded; /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - HDC 얻기 - //////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ CMainFrame *pFrame= (CMainFrame*)AfxGetMainWnd();ASSERT(pFrame); pFrame->m_flagTemplate = TRUE; CRect rect;rect.left=0;rect.right=100;rect.top=0;rect.bottom=200; CDC *pDC; pDC = GetDC(); DrawRect(pDC, rect, RGB(0,0,255), 2); CClientDC pDC(this); DrawRect(&pDC, rect, RGB(0,0,255), 2); HWND hParent = ::GetParent(m_hWnd); CMainFrame* pWnd = (CMainFrame*)AfxGetApp()->m_pMainWnd; HDC hDC = GetDC(pWnd->m_hWnd); CDC *pDC; pDC = GetDC(); EraseBkgnd(pDC,m_CamRect,m_DisRect); CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); CDC *pDC =pFrame->GetDC(); StretchDIBits(pDC->GetSafeHdc(),20,20,width,height, 0, 0,width, height, m_ColorGetImg, (LPBITMAPINFO)&dibHi, DIB_RGB_COLORS, SRCCOPY); CPaintDC dc(this); // device context for painting int width=m_CamRect.right; int height=m_CamRect.bottom; // TODO: Add your message handler code here CPaintDC dcView(GetDlgItem(IDC_IMG_HISTO_VIEW)); CRect rect; GetDlgItem(IDC_IMG_HISTO_VIEW)->GetClientRect(&rect); StretchDIBits(dcView.m_hDC,rect.left,rect.top,rect.right,rect.bottom, 0, 0, width, height, m_pTestBitmap, &m_pBitmapInfo, BI_RGB, SRCCOPY); CRect rect; GetDlgItem(IDC_IMG_HISTO_VIEW)->GetWindowRect(&rect); ScreenToClient(rect); InvalidateRect(&rect, FALSE); CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); //CChildFrame *pFrame = (CChildFrame *)AfxGetMainWnd(); // CPaintDC *pDC; CDC *pDC =pFrame->GetDC(); CVisionSysView* pView =( CVisionSysView* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); CVisionSysDoc *pDoc=pView->GetDocument(); CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); // CDC *pDC =pFrame->GetDC(); CDC *pDC =pView->GetDC(); /*-------------- HDC 얻기------------------------------------------------------------*/ CWnd *pWnd = GetDlgItem(IDC_CAMERA_VIEW); void CGraphResultPage3::DrawBitmap() { if (m_buf==NULL) return; CRect rect; GetDlgItem(IDC_IMG_HISTO_VIEW)->GetWindowRect(&rect); ScreenToClient(rect); InvalidateRect(&rect, FALSE); } void CGraphResultPage3::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here if (m_buf==NULL) return; BYTE *tmp; // DWORD-align for display tmp = JpegFile::MakeDwordAlignedBuf(m_buf,m_width,m_height,&m_widthDW); // set up a DIB BITMAPINFOHEADER bmiHeader; bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmiHeader.biWidth = m_width; bmiHeader.biHeight = m_height; bmiHeader.biPlanes = 1; bmiHeader.biBitCount = 24;bmiHeader.biCompression = BI_RGB; bmiHeader.biSizeImage = 0; bmiHeader.biXPelsPerMeter = 0; bmiHeader.biYPelsPerMeter = 0;bmiHeader.biClrUsed = 0; bmiHeader.biClrImportant = 0;// CRect rect; int width=bmiHeader.biWidth; int height=bmiHeader.biHeight; CPaintDC dcView(GetDlgItem(IDC_IMG_HISTO_VIEW)); dcView.SetStretchBltMode(STRETCH_DELETESCANS); CRect rect; GetDlgItem(IDC_IMG_HISTO_VIEW)->GetClientRect(&rect); StretchDIBits(dcView.m_hDC,rect.left,rect.top,rect.right,rect.bottom, 0, 0,width, height, tmp, (LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS, SRCCOPY); delete [] tmp; // Do not call CPropertyPage::OnPaint() for painting messages } /*-------------- HDC 얻기------------------------------------------------------------*/ CDC *theDC = GetDC(); if (theDC!=NULL) { CRect clientRect; GetClientRect(clientRect); // Center It UINT left = (clientRect.Width() - m_width) / 2; UINT top = (clientRect.Height() - m_height) / 2; // a 24-bit DIB is DWORD-aligned, vertically flipped and // has Red and Blue bytes swapped. we already did the // RGB->BGR and the flip when we read the images, now do // the DWORD-align BYTE *tmp; // DWORD-align for display tmp = JpegFile::MakeDwordAlignedBuf(m_buf, m_width, m_height, &m_widthDW); // set up a DIB BITMAPINFOHEADER bmiHeader; bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmiHeader.biWidth = m_width; bmiHeader.biHeight = m_height; bmiHeader.biPlanes = 1; bmiHeader.biBitCount = 24; bmiHeader.biCompression = BI_RGB; bmiHeader.biSizeImage = 0; bmiHeader.biXPelsPerMeter = 0; bmiHeader.biYPelsPerMeter = 0; bmiHeader.biClrUsed = 0; bmiHeader.biClrImportant = 0; //--------------------------------------------- theDC->SetStretchBltMode(STRETCH_DELETESCANS); //--------------------------------------------- // now blast it to the CDC passed in. // lines returns the number of lines actually displayed int lines = StretchDIBits(theDC->m_hDC, BMP_START_EDGE_X1,BMP_START_EDGE_Y1, 512, 384, 0,0, bmiHeader.biWidth, bmiHeader.biHeight, tmp, (LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS, SRCCOPY); delete [] tmp; CString info; info.Format("(%d x %d)", m_width, m_height); theDC->SetBkMode(TRANSPARENT); theDC->SetTextColor(RGB(0,0,0)); theDC->TextOut(10,5, info); ReleaseDC(dc); /*-------------- 다일로그/Propet 꽉찬 화면출력 화면-----------------------------------------*/ int CSETDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here ShowWindow(SW_SHOWMAXIMIZED);///화면 확대 UpdateWindow(); return 0; } /*-------------- Dialog를 메인화면으로 사용-----------------------------------------*/ #include "commtestDlg.h" BOOL CCommtestApp::InitInstance() { // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif CCommtestDlg dlg; m_pMainWnd = &dlg; dlg.DoModal(); // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } /*----------------------------------------------------------------------------------*/ MainFrame *pFrame=(CMainFrame*)AfxGetMainWnd(); CChildFrame *pChild=(CChildFrame*)pFrame->GetActiveFrame(); CWinColorDoc *pDoc=(CWinColorDoc*)pChild->GetActiveDocument(); CWinColorView *pView=(CWinColorView*)pChild->GetActiveView(); /*-------------- View 에서 App 얻기------------------------------------------------*/ CSECKLineDVM2App* pApp = (CSECKLineDVM2App*)AfxGetApp(); pApp->SetSerialInfo(); /*-------------- Doc 에서 View 얻기------------------------------------------------*/ CServerNetWorkView *pView=(CServerNetWorkView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView (); pView->Status_display(lpszMessage); /*-------------- View에서 Doc 얻기------------------------------------------------*/ CSECKLineDVM2Doc* pDoc = GetDocument(); pDoc-> /*--------------메인프레임에서 View, Doc 얻기-------------------------------------*/ CSECKLineDVM2View* pView = (CSECKLineDVM2View* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); pView-> CCSECKLineDVM2MultiDoc *pDoc; pDoc=pView->GetDocument(); pDoc-> /*--------------다일로그에서 View, MainFrame, Doc 얻기---------------------------*/ ..Dlg.h화일에 참조선언 #include "SECKLineDVM2MultiDoc.h" ..Dlg.cpp화일에 참조선언 #include "CSECKLineDVM2MultiView.h" #include "MainFrm.h" CSECKLineDVM2MultiView *pView=(CSECKLineDVM2MultiView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView (); pView-> CMainFrame* pFrame; pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; pFrame-> CSECKLineDVM2View* pView =( CSECKLineDVM2View* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); CSECKLineDVM2Doc *pDoc; pDoc=pView->GetDocument(); pDoc-> /*----------------------------다일로그 호출 종료----------------------------------*/ CProgressDlg Dlg; Dlg.Create(); Dlg.DestroyWindow(); //-------------- EndDialog(IDOK); CDialog::OnCancel(); EndDialog(IDCANCEL); //-------------- /*------------------------MessageBox 선택-----------------------------------------*/ if (AfxMessageBox("모델코드를 찾지 못했습니다.!\n모델을 입력 하시겠습니까?.", MB_YESNO) == IDYES) { } else { return; } /*-------------화면갱신----------------------------------------------------------*/ Invalidate(TRUE); RedrawWindow(); /*-------------------------------------------------------------------------------*/ /*------------타이틀 제목 없애기-------------------------------------------------*/ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style^=FWS_ADDTOTITLE; //제목 없음 없에기 return TRUE; cs.style = WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX | WS_MAXIMIZE; cs.lpszName = " WASS-2000 Scanning System"; cs.x = cs.y = 0; cs.cx = rct.right; cs.cy = rct.bottom; } /*----------------------전체 화면 출력 위치조정------------------------------*/ cs.x=200; cs.y=200; cs.cx=400; cs.cy=400; /*----------------------다일로그 디스플레이 위치 변경------------------------*/ CExpansionDlg1* g_pExpansion = NULL; if(!g_pExpansion) { g_pExpansion = new CExpansionDlg1(this); g_pExpansion->MoveWindow(50,387,354,320,true);//x,y,with,high Invalidate(TRUE); } /*------------------프로그램 종료--------------------------------------------*/ 윈도우 "x" 종료 (도큐먼트에 설정) void CMainFrame::OnClose() { // TODO: Add your message handler code here and/or call default if (MessageBox("프로그램을 종료 하시겠습니까? ", " 재고관리프로그램", /*MB_ICONQUESTION*/ MB_ICONSTOP | MB_OKCANCEL) == IDOK) { PostQuitMessage(0); CFrameWnd::OnClose(); } } BOOL CScrubDoc::SaveModified() { // TODO: Add your specialized code here and/or call the base class if(AfxMessageBox("프로그램을 종료하시겠습니까?",MB_ICONQUESTION|MB_YESNO)==IDYES) { OnClose(); PostQuitMessage(0); //((CMainFrame*)AfxGetApp()->m_pMainWnd)->SendMessage(WM_CLOSE,0,0); } else { return 0; } /* CMainFrame* m_pMainWnd; CMainWidowCloseDoc* pDataDoc = GetDocument(); if(IDOK==AfxMessageBox("프로그램을 종료하시겠습니까?",MB_OKCANCEL)) m_pMainWnd->OnClose; pDataDoc->OnCloseDocument(); */ return CDocument::SaveModified(); } { if(AfxMessageBox("프로그램을 종료하시겠습니까?",MB_ICONQUESTION|MB_YESNO)==IDYES) { OnClose(); PostQuitMessage(0); } else { return; } } /*--------------------프로그램 종료-------------------------------------------*/ ::ExitProcess(-1); /*--------------------프린트다일로그 않보이고 바로 출력하기-------------------*/ BOOL CManagementView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation pInfo->m_bDirect=TRUE; return DoPreparePrinting(pInfo); } /*---------------------------다일로그 호출-----------------------------------*/ CMyGraphDemoDlg dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - Windows 제 어 - //////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/ /*-------------- 다일로그 크기조절 ---------------------------------------*/ /*-----------------------------------------------------------------------------------*/ SetWindowText("Image View"); MoveWindow(50, 50,400,300); //x위치, y위치, x Size, y Size /*-----------------------------------------------------------------------------------*/ /*-------------- 윈도우 항상 위에 활성 ---------------------------------------*/ /*-----------------------------------------------------------------------------------*/ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { cs.dwExStyle = WS_EX_TOPMOST; } /*-----------------------------------------------------------------------------------*/ /*-------------- Menu Bar를 지우기 ---------------------------------------*/ /*-----------------------------------------------------------------------------------*/ CMenu* pMenu = new CMenu; pMenu->Attach(cs.hMenu); pMenu->DestroyMenu(); cs.hMenu = NULL; delete pMenu; /*-----------------------------------------------------------------------------------*/ /*-------------- 화면 갱신 ---------------------------------------*/ /*-----------------------------------------------------------------------------------*/ CStatic m_PcbImageView; CRect m_rectLargeCanvas; m_PcbImageView.GetWindowRect(&m_rectLargeCanvas); ScreenToClient(&m_rectLargeCanvas); InvalidateRect(m_rectLargeCanvas,FALSE); //=============================================== Invalidate(TRUE);Invalidate(false); RedrawWindow(); UpdateAllViews(FALSE); UpdateData(FALSE); /*------Hot Key------------------------------------------------------------*/ //-------------------------------------------------------------------------- BOOL CBroadView::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg->message==MM_MCINOTIFY) { if (pMsg->wParam==MCI_NOTIFY_SUCCESSFUL) { StopWav(); } } if (pMsg->message==MY_MSG_FIRE_OFF) { FireOff(); } if (pMsg->message==WM_KEYDOWN) { if (GetAsyncKeyState(VK_F1)&0x8000) { if (GetAsyncKeyState(VK_F5)&0x8000) { if (GetAsyncKeyState(VK_F9)&0x8000) { if (m_SetupBtn.IsWindowVisible()==FALSE) { FuncBtnShow(SW_SHOW); } } } } // 2007.2.15 if (GetAsyncKeyState(VK_F6)&0x8000){m_bPingViewChk=TRUE;Invalidate(FALSE);SetTimer(REDRAW_TIMER,2000,NULL);}//RedrawWindow(); } return CFormView::PreTranslateMessage(pMsg); } /*-------------- 메인프레임 상속 받아 다일로그 호출-----------------------------------------*/ //-------------------------------------------------------------------------------------------- void ResultShowDlgBar(CString str) { CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); CRect rect; pFrame->GetWindowRect(&rect); if (!pFrame->m_ResultShowBar.IsWindowVisible()) { pFrame->DockControlBar(&pFrame->m_ResultShowBar); pFrame->m_ResultShowBar.ShowWindow(SW_SHOW); pFrame->FloatControlBar(&pFrame->m_ResultShowBar,CPoint(rect.right-324,rect.bottom-125)); } CEdit *pEdit = (CEdit *)pFrame->m_ResultShowBar.GetDlgItem(IDC_RESULTSHOW); int nLength = pEdit->GetWindowTextLength(); if(nLength<10000) pEdit->SetSel(nLength, nLength); else pEdit->SetSel(nLength-10000, nLength); pEdit->ReplaceSel(str); pFrame->RecalcLayout(); } /*-----------------------------------------------------------------------------------*/ /*-------------- Extern File에서 다일로그제어 ---------------------------------------*/ /*-----------------------------------------------------------------------------------*/ #include "TestDlg.h" CTestDlg *TestDlg; TestDlg=NULL; if(TestDlg->GetSafeHwnd() == NULL) { TestDlg= new CTestDlg; TestDlg->Create(IDD_TESTDIALOG1); //manu_Swstatus = MENU_MANUAL;//3 } TestDlg->ShowWindow(FALSE); // TestDlg->SetDlgItemText(IDC_DLGSTATIC,"TEST 2006.12"); TestDlg->m_csData="Dlg Text 2006"; if(TestDlg->GetSafeHwnd() != NULL) TestDlg->ShowWindow(true); if(TestDlg->GetSafeHwnd() != NULL) { CString csTmp; TestDlg->GetDlgItemText(IDC_DLGSTATIC,csTmp); AfxMessageBox(csTmp); } //============================================================ void ResultShowDlgBar(CString str) { CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); CRect rect; pFrame->GetWindowRect(&rect); if (!pFrame->m_ResultShowBar.IsWindowVisible()) { pFrame->DockControlBar(&pFrame->m_ResultShowBar); pFrame->m_ResultShowBar.ShowWindow(SW_SHOW); pFrame->FloatControlBar(&pFrame->m_ResultShowBar,CPoint(rect.right-324,rect.bottom-125)); } CEdit *pEdit = (CEdit *)pFrame->m_ResultShowBar.GetDlgItem(IDC_RESULTSHOW); int nLength = pEdit->GetWindowTextLength(); if(nLength<10000) pEdit->SetSel(nLength, nLength); else pEdit->SetSel(nLength-10000, nLength); pEdit->ReplaceSel(str); pFrame->RecalcLayout(); } /*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/ /*-------------- 다일로그 확장-------------------------------------------------------*/ int m_nNormalWidth; int m_nExpandedWidth; BOOL m_bExpanded; void CExpandDlgDlg::ExpandyaContract() { CRect rcDlg, rcMarker; GetWindowRect(rcDlg); if (!m_bExpanded) { m_nExpandedWidth = rcDlg.Width(); m_Devide.GetWindowRect(rcMarker); m_nNormalWidth = (rcMarker.right - rcDlg.left); rcDlg.SetRect(rcDlg.left, rcDlg.top, rcDlg.left + m_nNormalWidth+12, rcDlg.top + rcDlg.Height()); HWND hWndChild = ::GetDlgItem(m_hWnd, IDC_STATIC_DEVIDE); while (hWndChild != NULL) { hWndChild = ::GetNextWindow(hWndChild, GW_HWNDNEXT); ::EnableWindow(hWndChild, m_bExpanded); } } else { rcDlg.SetRect( rcDlg.left, rcDlg.top, rcDlg.left + + m_nExpandedWidth, rcDlg.top + rcDlg.Height() ); HWND hWndChild = ::GetDlgItem(m_hWnd, IDC_STATIC_DEVIDE); while (hWndChild != NULL) { hWndChild = ::GetNextWindow(hWndChild, GW_HWNDNEXT); ::EnableWindow(hWndChild, m_bExpanded); } } MoveWindow(rcDlg, TRUE); m_bExpanded = !m_bExpanded; } /*-----------------------------------------------------------------------------------*/ /*-------------- 투명 다일로그-------------------------------------------------------*/ #define WS_EX_LAYERED 0x00080000 #define LWA_COLORKEY 1 // Use color as the transparency color. #define LWA_ALPHA 2 // Use bAlpha to determine the opacity of the layer typedef BOOL (WINAPI *lpfn) (HWND hWnd, COLORREF cr, BYTE bAlpha, DWORD dwFlags); lpfn g_pSetLayeredWindowAttributes; HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL")); g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, "SetLayeredWindowAttributes"); HWND m_hCurrWnd; // Handle to the window over which the mouse was last present m_hCurrWnd=*this; if (g_pSetLayeredWindowAttributes) { ::SetWindowLong(m_hCurrWnd, GWL_EXSTYLE, GetWindowLong(m_hCurrWnd, GWL_EXSTYLE) | WS_EX_LAYERED); g_pSetLayeredWindowAttributes(m_hCurrWnd, 50, 100, LWA_ALPHA); } /*-----------------------------------------------------------------------------------*/ /*-------------- Windows 이벤트------------------------------------------------------*/ #define define WSA_ASYNC (WM_USER+1) //.h----------------------------------- protected: //{{AFX_MSG(CHDDINSPView) afx_msg LONG UDPOnReceive(UINT,LONG); //.cpp---------------------------------- BEGIN_MESSAGE_MAP(CHDDINSPView, CFormView) //{{AFX_MSG_MAP(CHDDINSPView) //}}AFX_MSG_MAP ON_MESSAGE(WSA_ASYNC,UDPOnReceive) LONG CHDDINSPView::UDPOnReceive(UINT wParam, LONG lParam) { } /*-----------------------------------------------------------------------------------*/ /*-------------- 스레드에서 변수 참조------------------------------------------------*/ UINT RepeatThread(LPVOID pFuncData) { CCAMCFS20Dlg *pParent = (CCAMCFS20Dlg *)pFuncData; INT16 nAxis; double dDistance, dVelocity, dAccel; nAxis = pParent->m_nAxis; dDistance = pParent->GetDlgItemDouble(IDC_DISTANCE); dVelocity = pParent->GetDlgItemDouble(IDC_VELOCITY); dAccel = pParent->GetDlgItemDouble(IDC_ACCELERATION); pParent->bRepeatFlag = TRUE; } void CWinColorView::OnDraw(CDC* pDC) { CWinColorDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here if(pDoc->m_InImg==NULL) return; height = pDoc->dibHi.biHeight; width = pDoc->dibHi.biWidth; rwsize = WIDTHBYTES(pDoc->dibHi.biBitCount*pDoc->dibHi.biWidth); BmInfo->bmiHeader = pDoc->dibHi; SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,width,height, 0,0,0,height,pDoc->m_InImg,BmInfo, DIB_RGB_COLORS); } /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - 기타 정리 - /////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ //------프로그램 폴더안에 include화일 참조 선언 -----------------------------------------// #include "../include/PortInclude.h" //---------------------------------------------------------------------------------------// //---시간 계산---------------------------------------------------------------------------// double m_lStartTimeOneChipCycle = GetCurrentTime(); double m_lEndTimeOneChipCycle = GetCurrentTime(); double m_OneCycleTime=(m_lEndTimeOneChipCycle - m_lStartTimeOneChipCycle) * 0.001; //---------------------------------------------------------------------------------------// /*----------------------------------시간 얻기-------------------------------------*/ COleDateTime ccTestTime; CString strTmp; ccTestTime=COleDateTime::GetCurrentTime(); // strTmp=ccTestTime.Format("%I:%M:%S %p"); strTmp=ccTestTime.Format("%I:%M:%S"); m_clbTime.SetCaption(strTmp); int nTime; COleDateTime odtDate=COleDateTime::GetCurrentTime(); nTime=odtDate.GetYear(); nTime=odtDate.GetMonth(); nTime=odtDate.GetDay(); nTime=odtDate.GetHour(); nTime=odtDate.GetMinute(); nTime=odtDate.GetSecond(); SYSTEMTIME SystemTime, SystemTime2; GetSystemTime( &SystemTime); GetSystemTime( &SystemTime2); TRACE("JOG MINUS Time Value = %d \n", SystemTime2.wMilliseconds - SystemTime.wMilliseconds); //---------------------------------------------------------------------------------------// /* 선언부 */ #define PI 3.1415926535 #include <math.h> #define RADIUS 150 // 1. 영역구함 CRect rect; GetClientRect(rect); // 2. 이미지 중간점 구함 int m_nCenterX = rect.Width() / 2; // Center X point int m_nCenterY = rect.Height()/ 2; // Center Y point // 3. 반지름 int nHalf = RADIUS; // 반지름 // 4. 계산할 각도 구함 int m_nAngle = 0; m_nAngle = 360 / m_nRingNum; // m_nRingNum <-- 점의 갯 // 5. 저장할 점 선언 CPoint *pt; for ( int i = 0; i < m_nRingNum ; i++) { int nAxisX = 0; int nAxisY = 0; if( i == 0) { nAxisX = (int)( cos(360*(PI / 180)) * nHalf ); // X point nAxisY = (int)( sin(360*(PI / 180)) * nHalf ); // Y point } else { nAxisX = (int)( cos((m_nAngle*i)*(PI / 180)) * nHalf ); // X point nAxisY = (int)( sin((m_nAngle*i)*(PI / 180)) * nHalf ); // Y point } // 6. 구한 점 저장 pt[i].x = nAxisX; pt[i].y = nAxisY } /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - 다른프로그램 실행 - ///////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ /*------인터넷사이트 실행------------------------------------------------------------*/ WinExec("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE www.taeyang.com",SW_SHOW); WinExec("C:\\YeTools\\CpComSys\\CpPrc.exe",SW_SHOWMINIMIZED); /*------응용프로그램 실행------------------------------------------------------------*/ h. 헤더파일 선언 PROCESS_INFORMATION m_pi; //다른 프로그램 자동 실행및 종료를 위한 STARTUPINFO StartupInfo = {0}; StartupInfo.cb = sizeof(STARTUPINFO); PROCESS_INFORMATION ProcessInfo; StartupInfo.dwFlags = STARTF_USESHOWWINDOW; StartupInfo.wShowWindow = SW_HIDE;//안보이기 SW_SHOWMINIMIZED-최소화 if(!::CreateProcess(NULL, "C:\\YeTools\\CpComSys\\DLL\\CpPrc.exe", //if(!::CreateProcess(NULL, "DataCPK.exe", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo)) { AfxMessageBox("C:\\YeTools\\CpComSys\\CpPrc.exe 실행 화일을 찾을 수 없습니다."); } m_pi = ProcessInfo; // 종료------Close------------------------ HANDLE Killprocess; CString szKillProgramName; szKillProgramName = "C:\\YeTools\\CpComSys\\CpPrc.exe";//종료할 프로그램 위칭르 넣으 시요.. Killprocess = OpenProcess(PROCESS_TERMINATE,0,m_pi.dwProcessId); TerminateProcess(Killprocess, (unsigned)-1); C:\\Program Files\\Amfis1130\\SigmaTV.exe /* CloseHandle(m_pi.hProcess); CloseHandle(m_pi.hThread); LPSTR gAppName = "C:\\YeTools\\CpComSys\\CpPrc.exe"; if (FindWindow(gAppName, NULL)) { PostQuitMessage(0); } */ /*------NOTE PAD 실행------------------------------------------------------------*/ char csNote[128]; strcpy(csNote,"c:\\Windows\\NOTEPAD "); strcat(csNote,filename); WinExec(csNote,SW_SHOW); //------CString에 저장 후 메모장으로 보기------------------------------------------ m_csDisplay="";m_bShowDisplay=true; NotePadDisplay(); void Status_display(CString sdisplay) { if(m_bShowDisplay){m_csDisplay+=sdisplay+"\n"; if(m_csDisplay.GetLength()>=65550)m_csDisplay=""; } } void NotePadDisplay(void) { FILE *fp; CString Contents, datename, filename; filename="test.txt"; if ((fp = fopen(filename,"w+")) == NULL) { AfxMessageBox("File Open Error."); fclose(fp); return ;} Contents.Insert(Contents.GetLength(),m_csDisplay); fwrite(Contents,1,Contents.GetLength(),fp); fclose(fp); char csNote[128]; strcpy(csNote,"c:\\Windows\\NOTEPAD "); strcat(csNote,filename); WinExec(csNote,SW_SHOW); strcpy(csNote,"c:\\WINNT\\NOTEPAD "); strcat(csNote,filename); WinExec(csNote,SW_SHOW); } /*------실행화일 디렉토리 구하기--- -------------------------------------------------------*/ //--------SetCurrentDirectory---------------------------------------------------------------- if( mDAT.tot < 1 ) return; int stat; char *str; CString fname; DATE_INF day; str = new char[MAX_PATH+10]; ::GetCurrentDirectory(MAX_PATH+1,str); uiGetSysDate(&day); fname.Format(_T("DOC\\%s%04d%02d%02d.TXT"), //----------------------------------------------------------- (char *)(LPCTSTR)mDAT.pid,day.yy%100,day.mo,day.dd); //----------------------------------------------------------- CFileDialog dlg(FALSE,"DOC",fname,OFN_HIDEREADONLY,"프린트화일 (*.TXT)|*.TXT"); stat = dlg.DoModal(); ::SetCurrentDirectory(str); delete str; if( stat != IDOK ) return; fname = dlg.GetPathName(); ApSaveSeekDataInfor(fname,mDAT); char *str; CString fname; str = new char[_MAX_PATH+1]; ::GetCurrentDirectory(_MAX_PATH+1,str); AfxMessageBox((LPCTSTR)(char *)str); ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - 화 일 - ///////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //====================================================================================== /*------파일 다일로그-----------------------------------------------------------------*/ //====================================================================================== //==============화일 다일로그 PATH 지정 sprintf (CString으로 지정이 않되는 경우)============= CString csModelFile="C:\\AttachMachine\\Model\\MODEL1.txt"; char szBuf[1024];sprintf(szBuf,csModelFile); //===============화일 Load 다일로그========================================================== void CAttachMachineView::OnClickFileLoadBtn() { // TODO: Add your control notification handler code here CFileDialog filedlg( TRUE,// TRUE : FileOpen, FALSE :FileClose _T("ini"), // 디폴트 확장자 //_T("C:\\AttachMachine\\EquipSys\\*.*"), // 디폴트 파일명 --마지막\\*.* _T("C:\\AttachMachine\\EquipSys\\Test.ini"), // 디폴트 파일명 --현재 사용 파일을 제시 OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST| OFN_SHOWHELP, // OPENFILENAME // OFN_CREATEPROMPT //"텍스트 파일 (*.txt) | *.txt |데이타 파일 (*.dat; *.hex) | *.dat; *.hex|모든 파일 (*.*) | *.* ||", "File Load Data INI Files (*.ini)|*.ini||", // 필터 // 부모 윈도우 NULL ); if(filedlg.DoModal()==IDOK) { CString szFileDir=filedlg.GetPathName(); SEQ.csSpecFileName=szFileDir; FileData_DataSysGet(szFileDir,FILE_SPEC); Sub_SpecDataDisplay(); } } //================새로운 이름으로 저장 ===================================================== void CAttachMachineView::OnClickFileNewSaveBtn() { // TODO: Add your control notification handler code here CString szFileName=""; CString csFileName=""; CString szFileDir=""; CString csTmp=""; CString csCh=""; CString csLoad=""; //CFileDialog filedlg(FALSE,_T(""),_T(csTmp),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//저장 //CFileDialog filedlg(FALSE,_T(""),_T("C:\\AttachMachine\\Model\\*.*"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//저장 CFileDialog filedlg(FALSE,_T(""),_T("C:\\AttachMachine\\Model \\Test.ini"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//저장,현재 사용 파일을 제시 "Save AS Data INI Files (*.ini)|*.ini||",NULL);//"files (*.*)",NULL); if (filedlg.DoModal()==IDOK) { szFileDir=filedlg.GetPathName(); //AfxMessageBox(szFileDir);//전체 화일+확장자까지 if(Sub_SpecDataFileSave(szFileDir)) { SEQ.csSpecFileName=szFileDir; } else AfxMessageBox("화일로 저장 하지 못했습니다."); } } /*------파일열기 다일로그------------------------------------------------------------*/ void CFileDlgDlg::OnOpenFile() { // TODO: Add your control notification handler code here CFileDialog dialog( TRUE,// TRUE : FileOpen, FALSE :FileClose _T("txt"), // 디폴트 확장자 _T("C:\\Data\\*.*"), // 디폴트 파일명 --마지막\\*.* OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST| OFN_SHOWHELP, // OPENFILENAME // OFN_CREATEPROMPT "텍스트 파일 (*.txt) | *.txt |데이타 파일 (*.dat; *.hex) | *.dat; *.hex|모든 파일 (*.*) | *.* ||", // 필터 // 부모 윈도우 NULL ); dialog.DoModal(); } //--------------------------------------------------------------- CString InitialDir=Path_Image;// AfxMessageBox(Path_Model); InitialDir+="*.*"; CString Title = "SET IMAGE LOAD"; //------------------- LPSTR File = InitialDir.GetBuffer(InitialDir.GetLength()*2); //*char CFileDialog ImgDlg(TRUE,_T(Title),_T(InitialDir),OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST| OFN_SHOWHELP, // CFileDialog ImgDlg(TRUE,_T(Title),File,OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST| OFN_SHOWHELP, "Image files (*.jpg)|*.jpg||",NULL); if (ImgDlg.DoModal()==IDOK) { // tmModel.SetImage = ExtractFileName(ImgDlg->FileName); // dpSname->CaptionFalse = tmModel.SetImage; } //--------------------------------------------------------------- void CFileDlgDlg::OnSaveFile() { // TODO: Add your control notification handler code here CFileDialog dialog( FALSE,// TRUE : FileOpen,// FALSE :FileClose _T("txt"), // 디폴트 확장자 _T("C:\\Data\\Untitled.txt"), // 디폴트 파일명 OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, // OPENFILENAME // OFN_CREATEPROMPT "텍스트 파일 (*.txt) | *.txt |데이타 파일 (*.dat; *.hex) | *.dat; *.hex|모든 파일 (*.*) | *.* ||", // 필터 // 부모 윈도우 NULL ); dialog.DoModal(); } //===파일 읽기/저장 다일로그 ======================================================== CString szFileName=""; CString csFileName=""; CString szFileDir=""; CString csTmp=""; CString csCh=""; CString csLoad=""; // CFileDialog filedlg(TRUE,_T(""),_T(csTmp),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//열기 CFileDialog filedlg(FALSE,_T(""),_T(csTmp),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,//저장 "Save AS Excel CSV Files (*.csv)|*.csv||",NULL);//"files (*.*)",NULL); if (filedlg.DoModal()==IDOK) { szFileDir=filedlg.GetPathName(); AfxMessageBox(szFileDir);//전체 화일+확장자까지 szFileName=filedlg.GetFileTitle(); AfxMessageBox(szFileName);//입력 화일명만 szFileName=filedlg.GetFileName(); AfxMessageBox(szFileName);//입력 화일과 확장자 까지 //화일명 뺀 화일 Dir int index1=0; int index2=0; int nMode=0; index1=szFileDir.GetLength(); index2=szFileName.GetLength(); csTmp=szFileDir.Mid(0,(index1-index2)); szFileName=csTmp; AfxMessageBox(szFileName); //_mkdir(szFileName); } //===읽기======================================================== //--------------------------------------------------------------- csFileDir=filedlg.GetPathName(); //전체 디렉토리+화일명+확장자 csFileName=filedlg.GetFileName();//화일명+확장자 //--------------------------------------------------------------- CString strFilter; strFilter.LoadString(AFX_IDS_PICTUREFILTER); CString strTitle; strTitle.LoadString(AFX_IDS_PICTUREBROWSETITLE); CFileDialog fdlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, strFilter); fdlg.m_ofn.lpstrTitle = strTitle; int nResult = fdlg.DoModal(); SetFocus(); if (nResult != IDOK) return; CString strPath = fdlg.GetPathName(); //--------------------------------------------------- CString csFileName=""; CString csFileDir=""; CString csOpenDir; csOpenDir=CSProgramDir+CSFileSpecDataDir+CSDriveDataFileName+"\\"; CFileDialog filedlg(TRUE,_T("*.INI"),_T(csOpenDir),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "INI files (*.ini)|*.ini||",NULL); if (filedlg.DoModal()==IDOK) { csFileDir=filedlg.GetPathName(); CString csTmp;CString csBuf; CString csImage; if(csFileDir.GetLength()>0) { UpdateData(TRUE); CString csDriveName=csFileDir; CString filename = csDriveName;//+".ini"; FileData_UpdateCommandData(filename); CommandDataUpdateDisplay(); UpdateData(FALSE); } } //------------------------------------------------------------------ CString szFileName; CFileDialog filedlg(TRUE,"bmp",NULL,OFN_FILEMUSTEXIST, "BMP files (*.bmp)|*.bmp||",NULL); // if (freezeMode==FREEZE_BITMAP) { if (filedlg.DoModal()==IDOK) { szFileName=filedlg.GetPathName(); szFileName=filedlg.GetFileName(); } } //----------------------------------------------------------- int result; result=filedlg.DoModal(); switch(result) { case IDOK: szFileName=filedlg.GetPathName(); break; } return; /======================================================================================= // 화일 //====================================================================================== //==============화일 GetPrivateProfileString================================================== char Retemp[256]; char Lotemp[256]; char Filetemp[2048]; char Postemp[256]; //상대 주소 -PLC GetPrivateProfileString("CONFIG","REMOTE_ADDR","192.168.001.1",Retemp,256,".\\config.ini"); int iRePort = GetPrivateProfileInt("CONFIG","REMOTE_PORT",20000,".\\config.ini"); //현재 주소 -PC GetPrivateProfileString("CONFIG","LOCAL_ADDR","192.168.001.200",Lotemp,256,".\\config.ini"); int iLoPort = GetPrivateProfileInt("CONFIG","LOCAL_PORT",20001,".\\config.ini"); // 작업모델 화일 Dir GetPrivateProfileString("FILE","FILENAME","DataSpec.ini",Filetemp,2048,".\\config.ini"); CSFileSpecFileName=Filetemp; FileData_DataSysGet(CSFileSpecFileName,FILE_SPEC); // 카메라 X 위치 옵셋 GetPrivateProfileString("AXIS","CAM_POS_X","20",Postemp,256,".\\config.ini"); m_fCamOffsetPos_X=(float)atof((LPCSTR)Postemp); // 카메라 Y 위치 옵셋 GetPrivateProfileString("AXIS","CAM_POS_Y","20",Postemp,256,".\\config.ini"); m_fCamOffsetPos_Y=(float)atof((LPCSTR)Postemp); //==============화일 WritePrivateProfileString================================================== char temp[256]; char Filetemp[2048]; memset(Filetemp, 0, 2048); lstrcat(Filetemp, SEQ.csSpecFileName); WritePrivateProfileString("FILE","FILENAME",Filetemp,CSProgramDir+"\\config.ini"); GetDlgItemText(IDC_LISTEN_EDIT,temp,256); WritePrivateProfileString("CONFIG","LISTEN_PORT",temp,CSProgramDir+"\\config.ini"); //======================================================================================= FILE *inn; int i; CString fstr = SysDir; fstr += "\\calibration.rsl"; if( (inn= fopen(fstr,"r") ) != NULL ) { for(i=0;i<7;i++) fscanf(inn,"%lf",&m_Calib.Val[i]); fclose(inn); } else AfxMessageBox("File could not be opened.",MB_OK,0); //======================================================================================= FILE *inn; CString fstr = SysDir; fstr += "\\rotate.rsl"; if( (inn= fopen(fstr,"w") ) != NULL ) { fprintf( inn, "%lf %lf %lf %lf\n",m_Rotate.a,m_Rotate.b,m_Rotate.c,m_Rotate.d); fclose(inn); } else AfxMessageBox("File could not be opened.",MB_OK,0); //===============화일 복사=============================================================== sFileName=strSelectedPath + "\\" + "Pcb.dat"; tFileName=strBackUpPath + "\\" +"Pcb.dat"; CopyFile(sFileName, tFileName , false); //===============확장자 검색============================================================= fileName=fileDlg.GetPathName(); CString ext=fileName.Right(4); if (!ext.CompareNoCase(".JPG")) { // AX_LoadJPG(fileName); // SetDlgItemText(IDC_FILEDIR_STATIC, fileName); } if (!ext.CompareNoCase(".BMP")) { LoadBMPToSet(fileName); // SetDlgItemText(IDC_FILEDIR_STATIC, fileName); } //======================================================================================= FILE *fp; fp=fopen(fileName,"rb"); if (fp==NULL) { CString msg; msg="Can't open file for reading :\n"+fileName; m_errorText=msg; return NULL; } else { if (fread((void *)(pixel),1,3,fp)==3) { *(outBuf+ADDr)=pixel[2]; // r *(outBuf+ADDg)=pixel[1]; // g *(outBuf+ADDb)=pixel[0]; } } fclose(fp); //===================================================================================== HFILE fi; CString Contents=csData; CString csfilename=""; // csfilename=CSFileTestDataDir+csFileName; csfilename =FileData_TestFileDirChk(csFileName, nMode, nCh); fi=_lopen(csfilename,OF_READWRITE); int len; len=_lwrite(fi,(LPCSTR)m_csTestFileData[nCh],strlen(m_csTestFileData[nCh])); _lclose(fi); /*------파일 -------------------------------------------------------*/ CString csfilename=_T(""); CString Contents=_T(""); if(nCh>=CHMAX) return Contents; // filename = CSFileTestDataDir+csFileName; csfilename =FileData_TestFileDirChk(csFileName, FILE_CSV, nCh); CFile file(csfilename,CFile::modeReadWrite|CFile::shareExclusive); // CFile file("C:\\Polaronix\\Data\\Ch01.csv",CFile::modeReadWrite |CFile::shareExclusive); DWORD filesize=file.GetLength(); char *buf=new char[filesize+1]; file.Read(buf,filesize); file.Close(); buf[filesize]=NULL; Contents=LPCSTR(buf); delete buf; return Contents; /*------파일 -------------------------------------------------------*/ CString csData=""; char* pFileName = "C:\\Polaronix\\Data\\Ch01.csv"; CStdioFile file; if( !file.Open( pFileName, // | CFile::modeWrite | CFile::typeText ) ) { CFile::modeRead | CFile::typeText ) ) { } file.ReadString(csData); AfxMessageBox(csData); file.Close(); /*------파일 Open--------------------------------------------------*/ csBmpFile=_T("Bin\\bmp3_96.bin"); CFile *aFile; try { aFile=new CFile(csBmpFile,CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite | CFile::shareDenyNone); } catch(CFileException *e) { e->Delete(); } aFile->Abort(); //파일 닫기 실한 경우 예외 발생 않함 // aFile->Close(); // delete aFile; CString csBmpFile; csBmpFile=_T("Bin\\bmp1_128.bin"); CFile *aFile; try { // UINT readByte; aFile=new CFile(csBmpFile,CFile::modeNoTruncate|CFile::modeReadWrite|CFile::shareDenyNone); if(m_ZoomSize_X==96) { aFile->Write(temp2,12288); } else { aFile->Write(temp2,24576); } } catch(CFileException *e) { e->Delete(); } aFile->Abort(); //파일 닫기 실패한 경우 예외 발생 않함 // aFile->Close(); // delete aFile; /*------파일 Open--------------------------------------------------*/ HFILE fi; fi=_lopen("Bin\\bmp.bin",OF_READWRITE); int len; len=_lwrite(fi,(LPCSTR)temp1,strlen(temp1)); _lclose(fi); FILE *fp; filename="Bin\\bmp.bin"; if ((fp = fopen(filename,"w+")) == NULL) { AfxMessageBox("File Open Error."); fclose(fp); return ; } // Contents.Insert(Contents.GetLength(), // Contents.Format(csBmp); fwrite(Contents,1,Contents.GetLength(),fp); fclose(fp); /*------파일 Open--------------------------------------------------*/ #SETUP$ DF34257 CAS124T0 AS1234DF SDFG4321 #ENDEQ$ void CSBottleView::FileDataUpdate(int nMode) { CString csItemNameSelectFileName=_T("EquipSys\\ItemNameSelect.ini"); __int16 length, exist; char str[200]; int index=0; int nCount=0; FILE *fp ; CString filename=_T(""); CString ReadData=_T(""); CString strTmp=_T(""); BOOL bFileCheck=false; BOOL bFileCheck2=false; m_csModelItemName[1]=_T(""); m_csModelItemName[2]=_T(""); m_csModelItemName[3]=_T(""); m_csModelItemName[4]=_T(""); if(nMode==ITEMNAME) filename = csItemNameSelectFileName; else return; exist = access(filename,0); if (!exist && (fp = fopen(filename,"rt")) != NULL) { while (!feof(fp)) { ReadData.Empty(); if ( fgets(str, 200, fp) != NULL) { // error Return NULL ReadData.Format("%s", str); length = ReadData.GetLength(); if(bFileCheck2==false) { index = ReadData.Find("#SETUP$"); if(index>=0){bFileCheck=true; index=0; } else{AfxMessageBox("설정 데이타가 없습니다 !"); break;} } index = ReadData.Find("\t"); if(index>=0) { ReadData.Format("%s", ReadData.Mid(0 , length-2)); } else { ReadData.Format("%s", ReadData.Mid(0 , length-1)); } if(ReadData=="#ENDEQ$"){break;} if(bFileCheck) { if(bFileCheck2) { if(nCount>=60){AfxMessageBox("저장된 데이타가 너무많습니다");break;} if(nCount==0) {m_csModelItemName[1]=ReadData;} else if(nCount==1) {m_csModelItemName[2]=ReadData;} else if(nCount==2) {m_csModelItemName[3]=ReadData;} else if(nCount==3) {m_csModelItemName[4]=ReadData;} nCount++; } } bFileCheck2=true; } } /// fclose(fp); } else { AfxMessageBox("설정데이타가 없습니다! ItemNameSelect.data 화일이 없습니다."); return;//return 않하면 프로그램 에러 } fclose(fp); UpdateData(FALSE); } /*------파일 Open--------------------------------------------------*/ FILE *fpRobot; CString str; fpRobot = fopen("robot.txt", "rw+"); fprintf(fpRobot, "%s", str); fclose( fpRobot ); /*------파일 생성 및 NotePad로 실행--------------------------------------------------*/ FILE *fp; CString Contents, datename, filename; filename="test.txt"; if ((fp = fopen(filename,"w+")) == NULL) { AfxMessageBox("File Open Error."); fclose(fp); return ; } Contents.Format("\r\n=== FILE INFORMATION ===\r\n"); Contents.Insert(Contents.GetLength(),"\r\nDATE & TIME\t"); Contents.Insert(Contents.GetLength(),datename); Contents.Insert(Contents.GetLength(),"\r\nOPERATOR\t"); Contents.Insert(Contents.GetLength(),"\r\n\r\nFile Name\t"); Contents.Insert(Contents.GetLength(),filename); Contents.Insert(Contents.GetLength(),"\r\n\r\n"); Contents.Insert(Contents.GetLength(),"=== ERROR LISTS ===\r\n\r\n"); Contents.Insert(Contents.GetLength(), " ERR TIME\tCODE\tERROR MESSAGE \tOPERATORr\n\r\n"); fwrite(Contents,1,Contents.GetLength(),fp); fclose(fp); char csNote[128]; strcpy(csNote,"c:\\Windows\\NOTEPAD "); strcat(csNote,filename); WinExec(csNote,SW_SHOW); /*----------------다른 폴더에서 파일copy 후 다른이름으로 저장 -------------*/ SHFILEOPSTRUCT sfo; memset(&sfo,0,sizeof(sfo)); sfo.wFunc = FO_COPY; sfo.pFrom = _T("C:\\Aatool\\equip1.dat\0"); sfo.pTo = _T("C:\\DATA\\suho.dat\0"); /* sfo.wFunc = FO_RENAME; sfo.pFrom = _T("C:\\DATA\\equip1.dat\0"); sfo.pTo = _T("C:\\DATA\\ok.dat\0"); */ SHFileOperation(&sfo); /*----------------여러 화일 삭제 -----------------------------------------------------------*/ SHFILEOPSTRUCT sfo; memset(&sfo,0,sizeof(sfo)); sfo.wFunc = FO_DELETE; sfo.fFlags =OFN_SHOWHELP; //메시지 창 뛰우지 않음 sfo.pFrom = _T("Bmp\\*.*"); SHFileOperation(&sfo); /*------------------------------화일삭제--DeleteFile---------------------------------------*/ UpdateData(TRUE); CCPKView* pView =( CCPKView* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); CCPKDoc *pDoc; pDoc=pView->GetDocument(); int year,month; year=month=0; year=2001; month=5; if(AfxMessageBox(" ''Are You Sure ! DataBase delete ?'' ",MB_ICONQUESTION|MB_YESNO)==IDYES) { pDoc->DeleteDB(year,month); } else { return; } void CCPKDoc::DeleteDB(int year, int month) { CString csFile; csFile.Format("DATA\\CPK%4d%02d.mdb", year, month); DeleteFile((LPCTSTR)csFile); csFile.Format("DATA\\CPK%4d%02d.ldb", year, month); DeleteFile((LPCTSTR)csFile); } SHFILEOPSTRUCT sfo; memset(&sfo,0,sizeof(sfo)); sfo.wFunc = FO_DELETE; sfo.pFrom = _T("C:\\DATA\\200101.mdb\0"); SHFileOperation(&sfo); /*----------------------------------Windows 레지스트리에 저장-----------------------*/ void CPSRecorderView::INI_Get() { char buff[1024]; CString m_csTmpString; m_csTmpString = "NONE"; GetPrivateProfileString("TIME", "TESTTIME1", m_csTmpString.operator const char * (), (LPTSTR)buff, 20, "SAET32.INI"); m_fTestTime1= (float)atof((LPCSTR)buff); } void CPSRecorderView::INI_Write() { CString m_csTmpString; m_csTmpString = "NONE"; m_csTmpString.Format("%0.1f", m_fTestTime1); WritePrivateProfileString("TIME", "TESTTIME1", m_csTmpString.operator LPCTSTR(), "SAET32.INI"); } /*----------------------------------BMP File저장-------------------------------------*/ void CCoilView::OnSaveimg() { CFileDialog filedlg(FALSE,"bmp",NULL,OFN_OVERWRITEPROMPT, "BMP files (*.bmp)|*.bmp||",this); if (filedlg.DoModal()!=IDOK) return; CColorBmpFile bmp; bmp.OpenWrite(filedlg.GetPathName(),640,480); for (int y=479; y>=0; y-=2) { BYTE rbuffer[640],gbuffer[640],bbuffer[640]; Data->GetLine(y,rbuffer,gbuffer,bbuffer); bmp.WriteLineUpward(rbuffer,gbuffer,bbuffer); bmp.WriteLineUpward(rbuffer,gbuffer,bbuffer); } bmp.Close(); m_strMessage = "저장되었습니다."; UpdateData(FALSE); } /*----------------------------------goto-------------------------------------*/ goto fail; fail: MessageBox(NULL,"에러 입니다.","오류",MB_OK); return FALSE; /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - 이미지 - //////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ #define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8) #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) //======Center부터 검색 ====================================================================================== //===CenterSearch=========================== int x2=0, y2=0; int half_x=width/2; int half_y=height/2; float direct_y=-1; float direct_x=-1; int Cnt_y1=0;int Cnt_y2=0; int Cnt_x1=0;int Cnt_x2=0; //========================================== for(y=0; y<height-tHeight; y++) { //=====CenterSearch=================================== Cnt_y1++; if(Cnt_y1>=2){Cnt_y1=0;Cnt_y2++;} if(direct_y==1)direct_y=float(-1); else direct_y=1; y2=int( half_y + (Cnt_y2* direct_y) ); Cnt_x1=0; Cnt_x2=0; direct_x=-1; //=================================================== for(x=0; x<width-tWidth; x++) { //=====CenterSearch================================ Cnt_x1++; if(Cnt_x1>=2){Cnt_x1=0;Cnt_x2++;} if(direct_x==1)direct_x=float(-1); else direct_x=1; x2=int( half_x + (Cnt_x2* direct_x) ); //================================================= pDC.SetPixel(x2+100,y2+100,RGB(255,0,0)); } } //========================================================================================================== void ReadArrayToPointBit24(BYTE * OutImg, unsigned char BufImg[768][1024], UINT width, UINT height) { CVisionSysView* pView =( CVisionSysView* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); CDC *pDC =pView->GetDC(); //GrayImage =width*3; //Dispay Image= ((24*width)+31)/32*4), ((DWORD)(((bits)+31) & (~31)) / 8) //if(BufImg==NULL) return; int x,y; int y2=0; int nBit=0; nBit=24; int rwsize = WIDTHBYTES(nBit*width); int ADDr=0,ADDg=0,ADDb=0; if(BufImg!=NULL) { for(y=0; y<nHeight; y++) { for(x=0; x<nWidth; x++) { y2=((height-1)-y);//-1 은 첫줄이 않나옴, y가 0일경우 문제 // y2=y;//-1 은 첫줄이 않나옴, y가 0일경우 문제 ADDr=(y2*rwsize)+(3*x)+2; ADDg=(y2*rwsize)+(3*x)+1; ADDb=(y2*rwsize)+(3*x)+0; // BufRevImg[ADDr]=BufImg[y][x]; // BufRevImg[ADDg]=BufImg[y][x]; // BufRevImg[ADDb]=BufImg[y][x]; *(OutImg+ADDr)=BufImg[y][x]; *(OutImg+ADDg)=BufImg[y][x]; *(OutImg+ADDb)=BufImg[y][x]; // pDC->SetPixel(x+400,y,RGB(BufImg[ADDr],BufImg[ADDg],BufImg[ADDb])); // pDC->SetPixel(x+400,y,RGB(BufImg[y][x],BufImg[y][x],BufImg[y][x])); } } } } //========================================================================================================== void CVisionSysView::OnDraw(CDC* pDC) { // TODO: Add your specialized code here and/or call the base class CVisionSysDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CMainFrame *pFrame= (CMainFrame*)AfxGetMainWnd(); ASSERT(pFrame); /// return; int height=m_height;int width=m_width; int Bit=m_Bit; int rwsize = WIDTHBYTES(Bit*width); BITMAPINFOHEADER bmiHeader; bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmiHeader.biWidth = width; bmiHeader.biHeight = height; bmiHeader.biPlanes = 1; bmiHeader.biBitCount = Bit; bmiHeader.biCompression = BI_RGB; bmiHeader.biSizeImage = rwsize*height;//0; bmiHeader.biXPelsPerMeter = 0; bmiHeader.biYPelsPerMeter = 0;bmiHeader.biClrUsed = 0; bmiHeader.biClrImportant = 0;// CRect rect; CRect rect; //================================================================= //--Open Gray Image-- if(m_ColorGetImg!=NULL)//COLOR_IMAGE, SPOT_IMAGE, AUOT_IMAGE { /// CPaintDC dcView(GetDlgItem(IDC_IMG_VIEW)); /// dcView.SetStretchBltMode(STRETCH_DELETESCANS); /// GetDlgItem(IDC_IMG_VIEW)->GetClientRect(&rect); // StretchDIBits(dcView.m_hDC,rect.left,rect.top,rect.right,rect.bottom, /// StretchDIBits(dcView.m_hDC,rect.left,rect.top,width,height, // StretchDIBits(pDC->GetSafeHdc(),20,20,width,height, // 0, 0,width, height, m_ColorGetImg, (LPBITMAPINFO)&dibHi, DIB_RGB_COLORS, SRCCOPY); /// 0, 0,width, height, m_GrayImg, (LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS, SRCCOPY); // SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,width,height, // 0,0,0,height,m_GrayImg,(LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS); // DibDraw(pDC,0,0,height,width,m_ColorGetImg,24); if(m_GrayImg!=NULL)DibDraw(pDC,0,0,height,width,m_GrayImg,Bit); // DibDrawReverse(pDC,0,0,height,width,m_GrayImg,24); } //================================================================= if(m_OutImg!=NULL)//이미지 가감 처리영상 { int Add=640; DibDrawArrayToBit24(pDC,0+Add,0,height,width,m_OutImg,24); } //================================================================= // 마우스 드레그-템플레이트 정합을 위한 부분 if(m_flagMouse==TRUE) { //pDC->DrawEdge(&m_RectTrack,EDGE_ETCHED,BF_RECT); DrawRect(pDC, m_RectTrack, RGB(0,0,255), 2); } if(pFrame->m_flagTemplate==TRUE) // template가 설정되어 있는 경우 { if(m_TempImg!=NULL) { DibDrawBit8(pDC,width+40,0,tHeight,tWidth,m_TempImg,24); rect.left=width+40; rect.top=0; rect.right=rect.left+tWidth; rect.bottom=rect.top+tHeight; DrawRect(pDC, rect, RGB(255,0,0), 2); } } //================================================================== //--이미지 검색 결과 if(!(m_MatchPos.right==0 && m_MatchPos.bottom==0)) { if(m_bImageSearch) { // pDC->DrawEdge(&m_MatchPos,EDGE_BUMP,BF_RECT); DrawRect(pDC, m_MatchPos, RGB(255,0,0), 2); m_bImageSearch=FALSE; } } //================================================================== CClientDC pDC(this); int width=m_width;int height=m_height; if(m_ColorGetImg!=NULL)//COLOR_IMAGE, SPOT_IMAGE, AUOT_IMAGE { // CPaintDC dcView(GetDlgItem(IDC_IMG_VIEW)); // dcView.SetStretchBltMode(STRETCH_DELETESCANS); // GetDlgItem(IDC_IMG_VIEW)->GetClientRect(&rect); // StretchDIBits(dcView.m_hDC,rect.left,rect.top,rect.right,rect.bottom, // StretchDIBits(dcView.m_hDC,rect.left,rect.top,width,height, // 0, 0,width, height, m_ColorGetImg, (LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS, SRCCOPY); StretchDIBits(pDC.GetSafeHdc(),20,20,width,height, 0, 0,width, height, m_ColorGetImg, (LPBITMAPINFO)&dibHi, DIB_RGB_COLORS, SRCCOPY); // SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,width,height, // 0,0,0,height,m_ColorGetImg,(LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS); } //---------BMP File Save------------------------------------------------------------------------ //BMP File Save int ImageMaxNo=1; BITMAPINFOHEADER dibHi; BITMAPFILEHEADER dibHf;/// CClientDC pDC(this); int ADD1=0; int ADD2=0; int ADD3=0; int x=0; int y=0; int y2=0; int WidthLineSize=WIDTHBYTES(24*width); int WidthLineSize2=WIDTHBYTES(8*width); unsigned char *BmpOutImg=NULL; BmpOutImg = new unsigned char [(height*ImageMaxNo)*(width*24)*3]; BmpOutImg =buf; for(y=0; y<height*ImageMaxNo; y++) //BMP 화일로 저장 하기위해 거꾸로 저장 { y2=((height*ImageMaxNo)-y);//-1 중요(최종 한줄 표현) for(x=0; x<width; x++) { ADD1=(y2*WidthLineSize)+(3*x)+2; ADD2=(y2*WidthLineSize)+(3*x)+1; ADD3=(y2*WidthLineSize)+(3*x)+0; BmpOutImg[(y2*WidthLineSize)+(3*x)+2]=buf[(y*WidthLineSize)+(3*x)+2]; BmpOutImg[(y2*WidthLineSize)+(3*x)+1]=buf[(y*WidthLineSize)+(3*x)+1]; BmpOutImg[(y2*WidthLineSize)+(3*x)+0]=buf[(y*WidthLineSize)+(3*x)+0]; // pDC->SetPixel(x+500,y,RGB(BmpOutImg[ADD1],BmpOutImg[ADD2],BmpOutImg[ADD3])); } } DWORD dwBitsSize = sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256+WidthLineSize*height*sizeof(char); dibHi.biSize=40; dibHi.biWidth=width; dibHi.biHeight=height*ImageMaxNo; dibHi.biPlanes=1; dibHi.biBitCount =24; dibHi.biCompression=BI_RGB; dibHi.biSizeImage = 3*WidthLineSize*(height*ImageMaxNo); dibHi.biXPelsPerMeter=0; dibHi.biYPelsPerMeter=0; dibHi.biClrUsed = dibHi.biClrImportant =0; dibHf.bfType=0x4D42; dibHf.bfSize = dwBitsSize+sizeof(BITMAPFILEHEADER); // 전체파일 크기 if(dibHi.biBitCount==24) dibHf.bfSize -= sizeof(RGBQUAD)*256; // no pallette dibHf.bfOffBits = dibHf.bfSize - WidthLineSize*height*sizeof(char); dibHf.bfReserved1=dibHf.bfReserved2=0; FILE *outfile2; CString csFile; csFile.Format("C:\\Data\\D1_Project\\두오텍\\VisionSys\\bmp\\spec.bmp"); outfile2 = fopen(csFile,"wb"); fwrite(&dibHf,sizeof(char),sizeof(BITMAPFILEHEADER),outfile2); fwrite(&dibHi,sizeof(char),sizeof(BITMAPINFOHEADER),outfile2); fwrite(BmpOutImg,sizeof(char),3*WidthLineSize*dibHi.biHeight,outfile2); // fwrite(buf,sizeof(char),3*WidthLineSize*dibHi.biHeight,outfile2); fclose(outfile2); if(BmpOutImg) delete []BmpOutImg; //------------------------------------------------------------------------------------------------------------------------ void CNG::OnPaint() { CPaintDC pDC(this); // device context for painting // TODO: Add your message handler code here if (m_ColorImg==NULL) return; int height=m_height;int width=m_width; int rwsize = WIDTHBYTES(24*width); BITMAPINFOHEADER bmiHeader; bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmiHeader.biWidth = width; bmiHeader.biHeight = height; bmiHeader.biPlanes = 1; bmiHeader.biBitCount = 24;bmiHeader.biCompression = BI_RGB; bmiHeader.biSizeImage = rwsize*height;//0; bmiHeader.biXPelsPerMeter = 0; bmiHeader.biYPelsPerMeter = 0;bmiHeader.biClrUsed = 0; bmiHeader.biClrImportant = 0;// CRect rect; CRect rect; if(m_ColorImg!=NULL)//COLOR_IMAGE, SPOT_IMAGE, AUOT_IMAGE { CPaintDC dcView(GetDlgItem(IDC_IMAGE1)); dcView.SetStretchBltMode(STRETCH_DELETESCANS); GetDlgItem(IDC_IMAGE1)->GetClientRect(&rect); StretchDIBits(dcView.m_hDC,rect.left,rect.top,rect.right,rect.bottom, // StretchDIBits(dcView.m_hDC,rect.left,rect.top,width,height, // StretchDIBits(pDC->GetSafeHdc(),20,20,width,height, // 0, 0,width, height, m_ColorGetImg, (LPBITMAPINFO)&dibHi, DIB_RGB_COLORS, SRCCOPY); 0, 0,width, height, m_ColorImg, (LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS, SRCCOPY); // SetDIBitsToDevice(pDC.GetSafeHdc(),0,0,width,height, // 0,0,0,height,m_ColorGetImg,(LPBITMAPINFO)&bmiHeader, DIB_RGB_COLORS); } // Do not call CDialog::OnPaint() for painting messages } //----------------------------------------------------------------------------------------------------------------------- void DibDraw(CDC *pDC, int px, int py, int height, int width, BYTE *BufImg, int Bit) { int x,y; int y2=0; int nBit=0; nBit=Bit; int rwsize = WIDTHBYTES(nBit*width);//(((8*width)+31)/32*4); // 4바이트의 배수여야 함 BITMAPINFO *BmInfo; BmInfo = (BITMAPINFO*)malloc(sizeof(BITMAPINFO)+256*sizeof(RGBQUAD)); BmInfo->bmiHeader.biBitCount=nBit; BmInfo->bmiHeader.biClrImportant=256;//0 BmInfo->bmiHeader.biClrUsed=256;//0 BmInfo->bmiHeader.biCompression=BI_RGB;//0 BmInfo->bmiHeader.biHeight = height; BmInfo->bmiHeader.biPlanes=1; BmInfo->bmiHeader.biSize=40;//=sizeof(BITMAPINFOHEADER); if(nBit==24) BmInfo->bmiHeader.biSizeImage=rwsize*height*3; else BmInfo->bmiHeader.biSizeImage=rwsize*height; BmInfo->bmiHeader.biWidth =width; BmInfo->bmiHeader.biXPelsPerMeter=0; BmInfo->bmiHeader.biYPelsPerMeter=0; for(x=0; x<256; x++) // Palette number is 256 { BmInfo->bmiColors[x].rgbRed= BmInfo->bmiColors[x].rgbGreen = BmInfo->bmiColors[x].rgbBlue = x; BmInfo->bmiColors[x].rgbReserved = 0; } if(nBit==24) { int ADDr=0,ADDg=0,ADDb=0; int ADDr2=0,ADDg2=0,ADDb2=0; unsigned char *BufRevImg = new unsigned char [(width*24)*height*3]; /* if(BufImg!=NULL) { for(y=0; y<height; y++) { for(x=0; x<width; x++) { y2=((height-1)-y);//-1 은 첫줄이 않나옴, y가 0일경우 문제 ADDr=(y*rwsize)+(3*x)+2; ADDg=(y*rwsize)+(3*x)+1; ADDb=(y*rwsize)+(3*x)+0; ADDr2=(y2*rwsize)+(3*x)+2; ADDg2=(y2*rwsize)+(3*x)+1; ADDb2=(y2*rwsize)+(3*x)+0; BufRevImg[ADDr]=BufImg[ADDr2]; BufRevImg[ADDg]=BufImg[ADDg2]; BufRevImg[ADDb]=BufImg[ADDb2]; // pDC->SetPixel(x+400,y,RGB(BufImg[ADDr],BufImg[ADDg],BufImg[ADDb])); } } } */ int ImgSize=(width*24)*height*3;//int ImgSize=(width*8)*height;//8 memcpy(BufRevImg,BufImg,ImgSize); // SetDIBitsToDevice(pDC->GetSafeHdc(),px,py,width,height, // 0,0,0,height,BufImg,(LPBITMAPINFO)&dibHi, DIB_RGB_COLORS); // SetDIBitsToDevice(pDC->GetSafeHdc(),px,py,width,height, // 0,0,0,height,BufImg,BmInfo, DIB_RGB_COLORS); SetDIBitsToDevice(pDC->GetSafeHdc(),px,py,width,height, 0,0,0,height,BufRevImg,BmInfo, DIB_RGB_COLORS); delete []BufRevImg; } else { unsigned char *BufRevImg = new unsigned char [height*rwsize]; int index1,index2=0; for(y=0; y<height; y++) { index1 = y*rwsize; index2 = (height-y-1)*width; // index2 = y*width; for(x=0; x<width; x++) { BufRevImg[index1+x]=BufImg[index2+x]; // pDC->SetPixel(j,i,RGB(BufImg[index2+x],BufImg[index2+x],BufImg[index2+x])); } } SetDIBitsToDevice(pDC->GetSafeHdc(),px,py,width,height, 0,0,0,height,BufRevImg,BmInfo, DIB_RGB_COLORS); delete []BufRevImg; } } //----------------------------------------------------------------------------------------------------------------------- void CNG::AX_LoadJPG(CString fileName) { UINT width=427; UINT height=601; if (m_ColorGetImg!=NULL) {delete [] m_ColorGetImg;m_ColorGetImg=NULL;} if (m_ColorImg!=NULL) {delete [] m_ColorImg;m_ColorImg=NULL;} m_ColorImg = new unsigned char [(width*24)*height*3]; // read to buffer tmp m_ColorGetImg=JpegFile::JpegFileToRGB(fileName, &width, &height); //CString csTmp; csTmp.Format("%d, %d",width, height); AfxMessageBox(csTmp); //------------------------------------------------------- if(m_ColorGetImg==NULL){return;} //------------------------------------------------------- JpegFile::BGRFromRGB(m_ColorGetImg, width, height); // vertical flip for display JpegFile::VertFlipBuf(m_ColorGetImg, width * 3, height); m_width=width; m_height=height; int y=0; int x=0; int ADD1,ADD2,ADD3; int SUM1,SUM2,SUM3; #define WIDTHBYTES2(bits) (float((bits) / float(32)) * 4) float rwsize=WIDTHBYTES2(24*(width));//이미지 Size홀수 문제 int rwsize2=WIDTHBYTES(24*(width)); for(y=0; y<int(height); y++) { for(x=0; x<int(width); x++) { ADD1=int((y*rwsize)+(3*x)+2); ADD2=int((y*rwsize)+(3*x)+1); ADD3=int((y*rwsize)+(3*x)+0); SUM1=int((y*rwsize2)+(3*x)+2); SUM2=int((y*rwsize2)+(3*x)+1); SUM3=int((y*rwsize2)+(3*x)+0); m_ColorImg[SUM1]=m_ColorGetImg[ADD1]; m_ColorImg[SUM2]=m_ColorGetImg[ADD2]; m_ColorImg[SUM3]=m_ColorGetImg[ADD3]; //pDC.SetPixel(nX,nY,RGB(m_ColorImg[SUM1],m_ColorImg[SUM2],m_ColorImg[SUM3])); } } } //-------------------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// - POINT - ///////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ //======MEMCPY 생성======================================================================= unsigned char *OutImg = NULL; // OutImg = new unsigned char [(nWidth*Bit)*nHeight*3]; OutImg = (unsigned char*)calloc(nWidth*Bit*nHeight*3,sizeof(char)); BYTE *outBuf=NULL; long bufsize = (long)w * 3 * (long)h; outBuf=(BYTE *) new BYTE [bufsize]; outBuf=NULL; outBuf = new unsigned char [bufsize]; //dibHi.biSizeImage // outBuf=(BYTE *) new BYTE [bufsize]; //======MEMCPY============================================================================ int ImgSize=(width*24)*height*3;//24 // int ImgSize=(width*8)*height;//8 memcpy(BufImg,BufImg2,ImgSize); //======unsigned char,UINT * nWidth======================================================= UINT * nWidth, UINT * nHeight BYTE * BufImg; BufImg=NULL; BufImg = new unsigned char [ImgSize]; //dibHi.biSizeImage *nHeight = NULL; *nWidth = NULL; *nHeight=height; *nWidth=width; CVisionSysView* pView =( CVisionSysView* )((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView(); CDC *pDC =pView->GetDC(); //---------------------------------- int rwsize = WIDTHBYTES(24*width); int ADDr,ADDg,ADDb; //---------------------------------- int x=0; int y=0; for(y=0; y<height; y++) { for(x=0; x<width; x++) { ADDr=(y*rwsize)+(3*x)+2; ADDg=(y*rwsize)+(3*x)+1; ADDb=(y*rwsize)+(3*x)+0; *(BufImg+ADDr)=BufImg2[ADDr]; // r *(BufImg+ADDg)=BufImg2[ADDg]; // g *(BufImg+ADDb)=BufImg2[ADDb]; // b pDC->SetPixel(x+400,y,RGB(BufImg[ADDr],BufImg[ADDg],BufImg[ADDb])); //pDC->SetPixel(col,row,RGB(pixel[2],pixel[1],pixel[0])); } } /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////// - 함 수 - ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ int (*StepFunc_1[])(void) = { iCall_ChipTakeOff, iCall_LaserMeasure, iCall_MarkRecMove, iCall_AllMarkRec, iCall_AllBadRec, iCall_TargetMarkRec, iCall_XYMovAbsorb1, iCall_XYMovAbsorb2, iCall_NzlAbsorbOp1, iCall_NzlAbsorbOp2, iCall_XYMountMov1, iCall_XYMountMov2, iCall_NzlMountOp1, iCall_NzlMountOp2, iCall_AlignMoveXY1, iCall_AlignMoveXY2, iCall_InspectMoveXY1, iCall_InspectMoveXY2, iCall_AlignRecogOP1, iCall_AlignRecogOP2, iCall_InspectRecogOP1, iCall_InspectRecogOP2, iCall_NzlFocusReset1, iCall_NzlFocusReset2 }; if ((*StepFunc_1[index])() == NG) // 실행 error이면 TaskStatus1.iError = TaskStatus1.iNum; // main분기 data else // 실행성공이면 TaskStatus1.iError = OK; extern int iCall_LaserMeasure(void); /*--------------------------------------------------------------------------------------*/ ////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////// - 문 자 - ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------*/ //8888888888888888888888888888888888888888888888888888888888888 //--------데이타 형 ----------------------------- short int, int -2(15) ~ 2(15)-1 -32768~32767 long int -2(31) ~ 2(31)-1 -2147483648 ~ 2147483647 unsigned short int 0 ~2(15)-1 0 ~ 65535 unsigned int unsigned long int 0 ~2(32)-1 0 ~ 4294967295 float 10(-79) ~ 10(75) char -128 ~ 127 unsigned char 0 ~ 255 //------------------------------------------------------ char 8 int 16 short 16 long 32 float 32 double 64 //----------------------------------------------------- UINT-unsigned int BYTE -unsigned char LPSTR -char (LPSTR) char* LPTSTR -unsigned short LPCTSTR -CString //-------------------------- BOOL A Boolean value. BSTR A 32-bit character pointer. BYTE An 8-bit integer that is not signed. COLORREF A 32-bit value used as a color value. DWORD A 32-bit unsigned integer or the address of a segment and its associated offset. LONG A 32-bit signed integer. LPARAM A 32-bit value passed as a parameter to a window procedure or callback function. LPCSTR A 32-bit pointer to a constant character string. LPSTR A 32-bit pointer to a character string. LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. LPTSTR A 32-bit pointer to a character string that is portable for Unicode and DBCS. LPVOID A 32-bit pointer to an unspecified type. LRESULT A 32-bit value returned from a window procedure or callback function UINT A 16-bit unsigned integer on Windows versions 3.0 and 3.1; a 32-bit unsigned integer on Win32. WNDPROC A 32-bit pointer to a window procedure. WORD A 16-bit unsigned integer. WPARAM A value passed as a parameter to a window procedure or callback function: 16 bits on Windows versions 3.0 and 3.1; 32 bits on Win32. Data types unique to the Microsoft Foundation Class Library include the following: POSITION A value used to denote the position of an element in a collection; used by MFC collection classes. LPCRECT A 32-bit pointer to a constant (nonmodifiable) RECT structure. //888888888888888888888888888888888888888888888888888888888888888888888888888 _CRTIMP int __cdecl abs(int); _CRTIMP double __cdecl acos(double); _CRTIMP double __cdecl asin(double); _CRTIMP double __cdecl atan(double); _CRTIMP double __cdecl atan2(double, double); _CRTIMP double __cdecl cos(double); _CRTIMP double __cdecl cosh(double); _CRTIMP double __cdecl exp(double); _CRTIMP double __cdecl fabs(double); _CRTIMP double __cdecl fmod(double, double); _CRTIMP long __cdecl labs(long); _CRTIMP double __cdecl log(double); _CRTIMP double __cdecl log10(double); _CRTIMP double __cdecl pow(double, double); _CRTIMP double __cdecl sin(double); _CRTIMP double __cdecl sinh(double); _CRTIMP double __cdecl tan(double); _CRTIMP double __cdecl tanh(double); _CRTIMP double __cdecl sqrt(double); double hypot(double x,double y);직삼각형의 사변 길이 double sqrt(double x);x의 제곱근 double pow(double x,double y);xy. x의 y승 double log(double x);자연 대수 double log10(double x);상용 대수 double exp(double x);자연 대수 exp //============================================================= /*---------------------- 형 변형 ----------------------------*/ //============================================================= //--------------- double "%.1e" long int "%ld" //--------------- /*---------------------- Char 문자로 변경----------------------------*/ DWORD dData char Data[33] = "\0"; ultoa(dData, Data, 10); CString sRtn = Data; CString csText; char buff[40]; csText=((LPCSTR)buff); //---메모리할당 삭제---------------------------------- CString str; char *cstr=NULL;str = new char[_MAX_PATH+1]; ::GetCurrentDirectory(_MAX_PATH+1,cstr); str=(LPCTSTR)(char *)cstr; if(cstr)delete[] cstr; return str; //----------------------------------------------------- char *str; CString Path_App =(LPCTSTR)(char *)str; //----------------------------------------------------------- (char *)(LPCTSTR)mDAT.pid,day.yy%100,day.mo,day.dd); //----------------------------------------------------------- //----------------------------------- (LPCTSTR)(char *) //----------------------------------- /*---------------------- lstrcpy----------------------------*/ CString m_strSend; BYTE temp[2000]; lstrcpy((LPSTR)temp,(LPSTR)m_strSend.operator const char*()); /*---------------------- sprintf----------------------------*/ char buff[100]; int nData=100; sprintf(buff, "%d", nData); /*---------------------- int--------------------------------*/ int a=111; sprintf(temp,"%d",a); char buff[40]; int nData; nData=(int)atoi((LPCSTR)buff); /////////////////////////////// short number; CString str; char buffer[20]; if (number > 0) { _itoa(number,buffer,10); str += buffer; } str += "\r"; //CR /*-------------------문자-> float 변경------------------------*/ CString csTmp; float fHum; fHum = (float)atof((LPCSTR)csTmp); *-------------------float-> 문자 변경------------------------*/ float fData=(float) 12.345; CString csText; csText.Format("%.3f",fData); /*-------------------문자-> long 변경------------------------------*/ long lngBuf = ::atol(strBuf); /*------------------- long-> 문자 변경-----------------------------*/ long lData=1123; CString csTmp; csTmp.Format("%ld",lData); *-------------------double-> 문자 변경------------------------------*/ CString csText; double dData; csText.Format("%-13.2f",dData); /*--------------------일정문자 삭제--------------------------------*/ CString csRead; csRead.Delete(5,1); 위치,갯수 /*------------------일정문자 추출-----------------------------------*/ CString InString; CString csTemp = InString.Mid(index+1,6); 위치 , 크기 /*------------float 반올림------------------------------------------*/ #define Cut(A) (float)((long int) (((A)+.05) * 10))/10; float Test1=(float)2.374826; float Test2; Test2=Cut(Test1); csTest.Format("%.6f",Test2); m_nisFM1LCoolRpmDecision.SetOffText(csTest); /*------HEX and 비교구문-------------------------------------------*/ int test1=0; test1 |=0x4000; test1 |=0x02; if (test1 & 0x4000) { if ((test1 & 2)==0) { AfxMessageBox("!0x02"); } else { AfxMessageBox("0x02"); } } else { AfxMessageBox("!0x4000"); } /*------------상위 4비트만 추출 -----------------------------------*/ BYTE m_nInHorseTmp; BYTE Intemp; m_nInHorseTmp=0X7f; // m_nInHorseTmp |= 0X0f; m_nInHorseTmp &= 0Xf0; Intemp=m_nInHorseTmp/16; m_TEST.Format("%d",Intemp); UpdateData(FALSE); /*------------------------핵사값-> 십진수-------------------------*/ int no; CString n,m_NoData ; char buf[4]; buf[0]='0';buf[1]='A';buf[2]='2';buf[3]='B'; char data[4]; for(int s=0; s<4; s++) { data[s] = buf[i]; } no=AscHextoAscDec(data); n.Format("%d",no); m_NoData = n; /*-----------------------AscHextoAscDec----------------------------*/ int CFileTestView::AscHextoAscDec(char hexnum[]) { /* int dec; dec = (int)hex-48; if(dec>9) dec=dec-7; return dec; */ int i=0; int Num[4],Sum; for(i=0; i<4; i++) { if(hexnum[i]>0x40) Num[i]=hexnum[i]-'A'+10; else Num[i]=hexnum[i]-'0'; } Sum=Num[0]*16*16*16 + Num[1]*16*16 + Num[2]*16 + Num[3]; return Sum; } /*---------------------- 십진수-> 핵사------------------*/ int NUM; CString m_NoData; NUM=162; ///핵사값=A2 BYTE temp[3]; temp[0] = HextoAsc(NUM/16); temp[1] = HextoAsc(NUM%16); temp[2] = '\0'; m_NoData=temp; /*-----------------------HextoAsc-----------------------*/ BYTE CFileTestView::HextoAsc(BYTE hexnum) { unsigned char hex[] = { "0123456789ABCDEF" }; unsigned char ascnum; ascnum = hex[hexnum%16]; return ascnum; } /*-----------------ASC-> 정수변환-----------------------*/ int NanBangData; TCHAR NanBang[5]; NanBang[0] = pDoc->m_RsrBuf[9]; NanBang[1] = pDoc->m_RsrBuf[10]; NanBang[2] = pDoc->m_RsrBuf[11]; NanBang[3] = pDoc->m_RsrBuf[12]; NanBang[4] = '\0'; NanBangData = atoi(NanBang); /*--------------------Format----------------------------*/ int NO[4]; CString n; NO=0x31; n.Format("%d%d%d%d",NO[0],NO[0],NO[0],NO[0]); no=atoi(n); m_NoData = n; if(no==2100){m_NoData="aa";} else{m_NoData ="bb";} /*--------------------- strcat---------------------------*/ char string[80]; char temp2[20]; strcpy( string, "Hello world from " ); strcat( string, "1 " ); strcat( string, "2 " ); strcat( string, "!" ); sprintf(temp2,"%s\n",string); AfxMessageBox(temp2); /*-----------------strok----------------------------------*/ char seps[] = ","; char *token; char string[250]; ///*** Establish string and get the first token: strcpy( string, ReadData); token = strtok(string, seps ); char string[] = " 1 2 \n3,4,,,,,,end"; char s eps[] = " ,\t\n"; //char seps[] = ","; char *token; ////////*** Establish string and get the first token: token = strtok( string, seps ); char temp2[20]; while( token != NULL ) { //////*** While there are tokens in "string" sprintf(temp2,"%s",token); AfxMessageBox(temp2); ///////*** Get next token: token = strtok( NULL, seps ); } //---------------------------------------------------- char *data; char szBuf[1024]; CString InString="OK11,123,250,125"; sprintf(szBuf,InString); data = strtok(szBuf,","); AfxMessageBox(data); data = strtok(NULL,","); AfxMessageBox(data); data = strtok(NULL,","); AfxMessageBox(data); data = strtok(NULL,","); AfxMessageBox(data); //------------------------------------------ char string[] = "IMAGE1,IMAGE2,IMAGE3,IMAGE11,IMAGE4,IMAGE20"; //char seps[] = " ,\t\n"; char seps[] = ","; char *token; ////////*** Establish string and get the first token: token = strtok( string, seps ); char temp2[20]; while( token != NULL ) { //////*** While there are tokens in "string" sprintf(temp2,"%s",token); AfxMessageBox(temp2); ///////*** Get next token: token = strtok( NULL, seps ); } /*--------------------strlen--------------------------------*/ char temp2[20]; char buffer[61] = "How"; int len; len = strlen( buffer ); // sprintf(temp2,"%d",len); sprintf(temp2,"%s",buffer); AfxMessageBox(temp2); /*---------------------- int--------------------------------*/ int a=111; sprintf(temp,"%d",a); /*------------문자 위치(길이) 결과 얻어내기------------------------------------*/ InString="12345678+000 END"; index = InString.Find("END");//END의 위치 값 0 ~ END 정수 값 csText.Format("%d",index); AfxMessageBox(csText); index = InString.Find("+"); m_csTmpString=InString.Left(index+2);//index 위치+2 까지 문자 얻음 AfxMessageBox(m_csTmpString); /*-----------지정 위치 문자 얻어 내기 --String.GetAt(n)--------------------------------------*/ int Length2 = NamBangDataBuf.GetLength(); for(int n = 0; n < Length2; n++) { buf2[n] = NamBangDataBuf.GetAt(n); } buf2[n] = '\0'; n 위치의 문자를 얻어냄 /*-------------------------------------------------------------- index = InString.Find("+");//15 while(index>=0) { m_csTmpString=InString.Left(index+2);//"+"위치 + 2 위치 문자얻음 "," 까지 InString =InString.Right(InString.GetLength()-index-2); //전체에서 LEFT뺀 나머지 문자 OneChar = m_csTmpString.GetAt(0); //0 index = m_csTmpString.Find("N"); //4 WAV[0] = m_csTmpString.GetAt(index-4); //V WAV[1]=NULL; // csText.Format("%d",nI); // AfxMessageBox(csText); OneChar = m_csTmpString.GetAt(index-1); //3번 위치의 "1" 얻음 tmp[0]=OneChar; tmp[1]=NULL; //temp= "1"; nI=atoi(tmp); /*--------------------------대문자로 바꿈--------------------------------*/ CString Buf1; Buf1="abcdef"; Buf1.MakeUpper(); AfxMessageBox(Buf1); /*-------------------------일부 문자 뽑아 내기--------------------------*/ CString csTmp,InString; InString="#SNDATAok-aa#END"; csTmp=FindData(InString, "#SN",'#'); AfxMessageBox(csTmp); 결과=DATAok-aa CString CSECSystemView::FindData(CString csData, CString csFind, TCHAR OneChar) { int length,index,index2; CString csTmp,csTmpData; index = csData.Find(csFind);//MODEL_INFO length = csFind.GetLength(); csTmpData=csData.Right(csData.GetLength() - index - 1); index2 = csTmpData.Find(OneChar);//MODEL_INFO csTmp = csData.Mid(length+index,index2+1-length); // csData.Format("index=%d",index2); if((index < 0)||(index2 < 0)) return _T(""); else return csTmp; } /*------------------------핵사값-> 십진수-------------------------*/ int no; CString n,m_NoData ; char buf[4]; buf[0]='0';buf[1]='A';buf[2]='2';buf[3]='B'; char data[4]; for(int s=0; s<4; s++) { data[s] = buf[i]; } no=AscHextoAscDec(data); n.Format("%d",no); m_NoData = n; //-------------------------------------------------------------------// BYTE CHexAscChangeView::AsctoHex(BYTE ascnum) { unsigned char hex[] = { "0123456789ABCDEF" }; unsigned char i=0; do { if(hex[i] == ascnum) { return i; } i++; }while(i<16); return 0; } /*-----------------------AscHextoAscDec----------------------------*/ int CFileTestView::AscHextoAscDec(char hexnum[]) { /* int dec; dec = (int)hex-48; if(dec>9) dec=dec-7; return dec; */ int i=0; int Num[4],Sum; for(i=0; i<4; i++) { if(hexnum[i]>0x40) Num[i]=hexnum[i]-'A'+10; else Num[i]=hexnum[i]-'0'; } Sum=Num[0]*16*16*16 + Num[1]*16*16 + Num[2]*16 + Num[3]; return Sum; } /*---------------------- 십진수-> 핵사-------------------*/ int NUM; CString m_NoData; NUM=162; ///핵사값=A2 BYTE temp[3]; temp[0] = HextoAsc(NUM/16); temp[1] = HextoAsc(NUM%16); temp[2] = '\0'; m_NoData=temp; /*-----------------------HextoAsc-----------------------*/ BYTE CFileTestView::HextoAsc(BYTE hexnum) { unsigned char hex[] = { "0123456789ABCDEF" }; unsigned char ascnum; ascnum = hex[hexnum%16]; return ascnum; } /*-----------------ASC-> 정수변환-----------------------*/ int NanBangData; TCHAR NanBang[5]; NanBang[0] = pDoc->m_RsrBuf[9]; NanBang[1] = pDoc->m_RsrBuf[10]; NanBang[2] = pDoc->m_RsrBuf[11]; NanBang[3] = pDoc->m_RsrBuf[12]; NanBang[4] = '\0'; NanBangData = atoi(NanBang); /*--------------------Format----------------------------*/ int NO[4]; CString n; NO=0x31; n.Format("%d%d%d%d",NO[0],NO[0],NO[0],NO[0]); no=atoi(n); m_NoData = n; if(no==2100){m_NoData="aa";} else{m_NoData ="bb";} /*--------------------- strcat---------------------------*/ char string[80]; char temp2[20]; strcpy( string, "Hello world from " ); strcat( string, "1 " ); strcat( string, "2 " ); strcat( string, "!" ); sprintf(temp2,"%s\n",string); AfxMessageBox(temp2); /*-----------------strok----------------------------------*/ char string[] = " 1 2 \n3,4,,,,,,end"; char seps[] = " ,\t\n"; //char seps[] = ","; char *token; ////////*** Establish string and get the first token: token = strtok( string, seps ); char temp2[20]; while( token != NULL ) { //////*** While there are tokens in "string" sprintf(temp2,"%s",token); AfxMessageBox(temp2); ///////*** Get next token: token = strtok( NULL, seps ); } /*--------------------strlen--------------------------------*/ char temp2[20]; char buffer[61] = "How"; int len; len = strlen( buffer ); // sprintf(temp2,"%d",len); sprintf(temp2,"%s",buffer); AfxMessageBox(temp2); Measure_r= hypot(fPoint_x,fPoint_y); Measure_r=sqrt(fPoint_x*fPoint_x+fPoint_y*fPoint_y); //---CString To Byte (unsigned char)------------------------------------------ BYTE c_str(CString str, int n) { BYTE cDt; int nSize=0; nSize=str.GetLength(); if(nSize>=n) { cDt= str.GetAt(n); } return cDt; } //------------------------------------------------------------------------------ CString str; BYTE temp; for(int i=0; i<6; i++) { str.Format("%d : ",i); if(c_str(name,i)=='3') AfxMessageBox(str+"ok"); else AfxMessageBox(str); } //------------------------------------------------------------------------------ //char 문자변형 !!!!!!!!!!!!!!!!!!!! BYTE temp[2]; temp[0]=(c_str(name,i); temp[1]='\0'; str=(LPSTR)temp; AfxMessageBox(str); /*---------------------------------------------------------*/ /*----------------------HEX 8BIT 문자표현----------------------------------------*/ CString CSECKLineDVM2View::Hext8BitAsctoChange(int CheckSum) { CString csHiBit,csLowBit,csResult; char HiBit; char LowBit; HiBit=(CheckSum & 0xf0)/16; LowBit=CheckSum & 0x0f; csHiBit=HextoAsc(HiBit); csLowBit=HextoAsc(LowBit); csResult=csHiBit+csLowBit; return csResult; } BYTE CModuleAgingView::HextoAsc(BYTE hexnum) { unsigned char hex[] = { "0123456789ABCDEF" }; unsigned char ascnum; int nBuf=0; nBuf=hexnum%16; if((nBuf>=0)&&(nBuf<=15)) { ascnum = hex[hexnum%16]; } else { ascnum =0; } return ascnum; } /*----------------------HEX 분할 표현----------------------------------------*/ long dAddress=4294967295; //FF FF FF FF NAddress[3]=long((lAddress&0xff000000)>>24); NAddress[2]=long((lAddress&0x00ff0000)>>16); NAddress[1]=long((lAddress&0x0000ff00)>>8); NAddress[0]=long(lAddress&0x000000ff); unsigned char Command[]={NAddress[3],NAddress[2],NAddress[1],NAddress[0]}; //81-Command, 00 08- Data Size 8Byte pFrame->m_serial[PORT_MODULE_A-1].Write(Command,4); /*----------------------HEX 232전송----------------------------------------*/ unsigned char *BinOutImg; BinOutImg = NULL; //변경전 Image file size BinOutImg = new unsigned char [3*WidthLineSize*(PaletteSize_y*ImageMaxNo)]; Data[0]=int(BinOutImg[index+0]); unsigned char Buf1[]={Data[0]}; pFrame->m_serial[port-1].Write(Buf1,1); Data[1]=int(BinOutImg[index+1]); unsigned char Buf2[]={Data[1]}; pFrame->m_serial[port-1].Write(Buf2,1); /*----------------------String Table 얻기----------------------------------------*/ CString strTemp; if (strTemp.LoadString(IDS_SERVERRESET)) /*----------------------한글 폰트 얻기 / 출력------------------------------------*/ const char KoreanFont_MOUM_A1[14][3] = { "각","간","갇","갈","감","갑","갓","강","갖","갗", "갘","같","갚","갛", }; CString csData; BYTE temp[3]; temp[0] = KoreanFont_MOUM_A1[1][0]; temp[1] = KoreanFont_MOUM_A1[1][1]; temp[2] = '\0'; csData=temp; AfxMessageBox(csData); /*----------------------사이즈가 수시변동 끝 네자리 얻기------------------------*/ CString strTmp=_T(""); CString strTmp2=_T(""); CString csData="EX-4A21"; int nLotSize=0; strTmp=csData; if(strTmp.GetLength()>0) { nLotSize=strTmp.GetLength(); if(nLotSize>=4) { for(int i=nLotSize-4; i<nLotSize; i++) { strTmp2+=strTmp.Mid(i,1); } } } if(strTmp2.GetLength()==4) { AfxMessageBox(strTmp2); } /*---------------------- Delete------------------------*/ CString csRead; int nNo; csRead.Delete(nNo,1); //============================================================= //============================================================= //====입력 문자중 숫자만 체크================================= bool AsctoHexChk(CString csNo) { if(csNo=="")return false; int Length = csNo.GetLength(); if(Length<=0)return false; BYTE No; bool chk=true; for(int i=0; i<Length; i++) { No=csNo.GetAt(i); if(!AsctoHex(No))chk=false; } return chk; } bool AsctoHex(BYTE ascnum) { unsigned char hex[] = { "0123456789." }; unsigned char i=0; bool Chk=false; do { if(hex[i] == ascnum) { Chk=true; break; } i++; }while(i<11); return Chk; } //====한정 문자 메세지 ========================================== const char BOARD1[MAX_BD][10]= { "DZ1","DX1","DY1","DZ2","DX2","DY2","FX1","FY1",}; CLabelControl *pLabel; for(int i=0; i<MAX_BD; i++) { pLabel = (CLabelControl *)GetDlgItem(IDC_LBL_AXIS_X+i); pLabel->SetWindowText(LPTSTR(BOARD1[i])); } //====리스트 사용하기============================================ typedef struct { CString MarkID; int MarkNo; int Registered; int iLight[3]; } MARKDATA_RECORD; CList<MARKDATA_RECORD, MARKDATA_RECORD&> m_list; void CMarkData::Load() { Clear(); MARKDATA_RECORD rec; CString strSection; CIniFile iniFile("C:\\MountData\\MarkData\\Mark.lib"); int count = iniFile.ReadInt("Mark Library", "Count"); for (int i=1; i<=count; i++) { strSection.Format("Mark #%02d", i); rec.MarkID = iniFile.ReadString(strSection, "Mark ID"); m_list.AddTail(rec); } } void CMarkData::Save() { MARKDATA_RECORD rec; POSITION pos; CString strSection; int count = GetCount(); CIniFile iniFile("C:\\MountData\\MarkData\\Mark.lib"); iniFile.WriteInt("Mark Library", "Count", count); for (int i=0; i<count; i++) { pos = m_list.FindIndex(i); rec = m_list.GetAt(pos); iniFile.WriteDouble(strSection, "OuterDiameter", rec.OuterDiameter); } } void CMarkData::Clear() { m_list.RemoveAll(); } MARKDATA_RECORD CMarkData::GetData(int index) { ASSERT(index > 0 && index <= m_list.GetCount()); POSITION pos = m_list.FindIndex(index-1); MARKDATA_RECORD rec = m_list.GetAt(pos); return rec; } bool CMarkData::InsertBlankData(int index) { ASSERT(index > 0 && index <= m_list.GetCount()+1); MARKDATA_RECORD rec; rec.MarkID.Empty(); rec.MarkNo = 0; rec.Registered = 0; rec.iLight[0] = 1; rec.iLight[1] = 1; rec.iLight[2] = 1; if (index > m_list.GetCount()) { m_list.AddTail(rec); } else { POSITION pos = m_list.FindIndex(index-1); m_list.InsertBefore(pos, rec); } return true; } //___________________________________________________________________________ void CMarkData::DeleteData(int index) { if (index < 0 || index > m_list.GetCount()) return; POSITION pos = m_list.FindIndex(index-1); m_list.RemoveAt(pos); } //=========================================================================== //=========================================================================== void CMarkData::SetData(int index, MARKDATA_RECORD rec) { ASSERT(index > 0 && index <= m_list.GetCount()); POSITION pos = m_list.FindIndex(index-1); m_list.SetAt(pos, rec); } //====struct================================================================= //typedef struct tagBLOBDATA { short ltx, lty, rbx, rby; int n, pc; float cx, cy, r, g, b, u02, u20, u11, m, v; } BLOBDATA; //--------------------------------------------------------------------------- //====Point Reutn============================================================ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BYTE * BMPFile::LoadBMP(CString fileName,UINT *width, UINT *height) { BYTE *outBuf=NULL; long bufsize = (long)w * 3 * (long)h; outBuf=(BYTE *) new BYTE [bufsize]; for (int col=0;col<w;col++) { long offset = col * 3; char pixel[3]; if (fread((void *)(pixel),1,3,fp)==3) { // we swap red and blue here *(outBuf + rowOffset + offset + 0)=pixel[2]; // r *(outBuf + rowOffset + offset + 1)=pixel[1]; // g *(outBuf + rowOffset + offset + 2)=pixel[0]; // b } } int w; int h; *width=w; *height=h; return outBuf; } //=========================================================================== BYTE * BMPFile::LoadBMP(CString fileName, UINT *width, UINT *height) { BITMAP inBM; BYTE m1,m2; long filesize; short res1,res2; long pixoff; long bmisize; long compression; unsigned long sizeimage; long xscale, yscale; long colors; long impcol; BYTE *outBuf=NULL; // for safety *width=0; *height=0; // init m_errorText="OK"; m_bytesRead=0; FILE *fp; fp=fopen(fileName,"rb"); if (fp==NULL) { CString msg; msg="Can't open file for reading :\n"+fileName; m_errorText=msg; return NULL; } else { long rc; rc=fread((BYTE *)&(m1),1,1,fp); m_bytesRead+=1; if (rc==-1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((BYTE *)&(m2),1,1,fp); m_bytesRead+=1; if (rc==-1) m_errorText="Read Error!"; if ((m1!='B') || (m2!='M')) { m_errorText="Not a valid BMP File"; fclose(fp); return NULL; } //////////////////////////////////////////////////////////////////////////// // // read a ton of header stuff rc=fread((long *)&(filesize),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((int *)&(res1),2,1,fp); m_bytesRead+=2; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((int *)&(res2),2,1,fp); m_bytesRead+=2; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(pixoff),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(bmisize),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(inBM.bmWidth),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(inBM.bmHeight),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((int *)&(inBM.bmPlanes),2,1,fp); m_bytesRead+=2; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((int *)&(inBM.bmBitsPixel),2,1,fp); m_bytesRead+=2; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(compression),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(sizeimage),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(xscale),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(yscale),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(colors),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} rc=fread((long *)&(impcol),4,1,fp); m_bytesRead+=4; if (rc!=1) {m_errorText="Read Error!"; fclose(fp); return NULL;} //////////////////////////////////////////////////////////////////////////// // i don't do RLE files if (compression!=BI_RGB) { m_errorText="This is a compressed file."; fclose(fp); return NULL; } if (colors == 0) { colors = 1 << inBM.bmBitsPixel; } //////////////////////////////////////////////////////////////////////////// // read colormap RGBQUAD *colormap = NULL; switch (inBM.bmBitsPixel) { case 24: break; // read pallete case 1: case 4: case 8: colormap = new RGBQUAD[colors]; if (colormap==NULL) { fclose(fp); m_errorText="Out of memory"; return NULL; } int i; for (i=0;i<colors;i++) { BYTE r,g,b, dummy; rc=fread((BYTE *)&(b),1,1,fp); m_bytesRead++; if (rc!=1) { m_errorText="Read Error!"; delete [] colormap; fclose(fp); return NULL; } rc=fread((BYTE *)&(g),1,1,fp); m_bytesRead++; if (rc!=1) { m_errorText="Read Error!"; delete [] colormap; fclose(fp); return NULL; } rc=fread((BYTE *)&(r),1,1,fp); m_bytesRead++; if (rc!=1) { m_errorText="Read Error!"; delete [] colormap; fclose(fp); return NULL; } rc=fread((BYTE *)&(dummy),1,1,fp); m_bytesRead++; if (rc!=1) { m_errorText="Read Error!"; delete [] colormap; fclose(fp); return NULL; } colormap[i].rgbRed=r; colormap[i].rgbGreen=g; colormap[i].rgbBlue=b; } break; } if ((long)m_bytesRead>pixoff) { fclose(fp); m_errorText="Corrupt palette"; delete [] colormap; fclose(fp); return NULL; } while ((long)m_bytesRead<pixoff) { char dummy; fread(&dummy,1,1,fp); m_bytesRead++; } int w=inBM.bmWidth; int h=inBM.bmHeight; // set the output params *width=w; *height=h; long row_size = w * 3; long bufsize = (long)w * 3 * (long)h; //////////////////////////////////////////////////////////////////////////// // alloc our buffer outBuf=(BYTE *) new BYTE [bufsize]; if (outBuf==NULL) { m_errorText="Memory alloc Failed"; } else { //////////////////////////////////////////////////////////////////////////// // read it long row=0; long rowOffset=0; // read rows in reverse order for (row=inBM.bmHeight-1;row>=0;row--) { // which row are we working on? rowOffset=(long unsigned)row*row_size; if (inBM.bmBitsPixel==24) { for (int col=0;col<w;col++) { long offset = col * 3; char pixel[3]; if (fread((void *)(pixel),1,3,fp)==3) { // we swap red and blue here *(outBuf + rowOffset + offset + 0)=pixel[2]; // r *(outBuf + rowOffset + offset + 1)=pixel[1]; // g *(outBuf + rowOffset + offset + 2)=pixel[0]; // b } } m_bytesRead+=row_size; // read DWORD padding while ((m_bytesRead-pixoff)&3) { char dummy; if (fread(&dummy,1,1,fp)!=1) { m_errorText="Read Error"; delete [] outBuf; fclose(fp); return NULL; } m_bytesRead++; } } else { // 1, 4, or 8 bit image //////////////////////////////////////////////////////////////// // pixels are packed as 1 , 4 or 8 bit vals. need to unpack them int bit_count = 0; UINT mask = (1 << inBM.bmBitsPixel) - 1; BYTE inbyte=0; for (int col=0;col<w;col++) { int pix=0; // if we need another byte if (bit_count <= 0) { bit_count = 8; if (fread(&inbyte,1,1,fp)!=1) { m_errorText="Read Error"; delete [] outBuf; delete [] colormap; fclose(fp); return NULL; } m_bytesRead++; } // keep track of where we are in the bytes bit_count -= inBM.bmBitsPixel; pix = ( inbyte >> bit_count) & mask; // lookup the color from the colormap - stuff it in our buffer // swap red and blue *(outBuf + rowOffset + col * 3 + 2) = colormap[pix].rgbBlue; *(outBuf + rowOffset + col * 3 + 1) = colormap[pix].rgbGreen; *(outBuf + rowOffset + col * 3 + 0) = colormap[pix].rgbRed; } // read DWORD padding while ((m_bytesRead-pixoff)&3) { char dummy; if (fread(&dummy,1,1,fp)!=1) { m_errorText="Read Error"; delete [] outBuf; if (colormap) delete [] colormap; fclose(fp); return NULL; } m_bytesRead++; } } } } if (colormap) {
댓글을 달아 주세요