// KeyStringDlg.cpp : implementation file // #include "stdafx.h" #include "KeyString.h" #include "KeyStringDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CKeyStringDlg dialog CKeyStringDlg::CKeyStringDlg(CWnd* pParent /*=NULL*/) : CDialog(CKeyStringDlg::IDD, pParent) { //{{AFX_DATA_INIT(CKeyStringDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hFileIcon = AfxGetApp()->LoadIcon(IDI_FILEOPEN ); m_hSaveIcon = AfxGetApp()->LoadIcon(IDI_FILESAVE ); } void CKeyStringDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CKeyStringDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CKeyStringDlg, CDialog) //{{AFX_MSG_MAP(CKeyStringDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDB_SEARCH, OnSearch) ON_BN_CLICKED(IDB_FILESELECT, OnFileselect) ON_EN_UPDATE(IDC_FILE, OnUpdateFile) ON_BN_CLICKED(IDB_LOGFILESELECT, OnLogfileselect) ON_EN_UPDATE(IDC_LOGFILE, OnUpdateLogfile) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CKeyStringDlg message handlers BOOL CKeyStringDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here ((CButton *)GetDlgItem( IDB_FILESELECT ) )->SetIcon( m_hFileIcon ); ((CButton *)GetDlgItem( IDB_LOGFILESELECT ) )->SetIcon( m_hSaveIcon ); ((CWnd *)GetDlgItem( IDC_PROGRESS ) )->ShowWindow( SW_HIDE ); ((CWnd *)GetDlgItem( IDC_VIEW ) )->ShowWindow( SW_SHOW ); ((CButton *)GetDlgItem( IDC_VIEW ) )->SetCheck( TRUE ); return TRUE; // return TRUE unless you set the focus to a control } void CKeyStringDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CKeyStringDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } HCURSOR CKeyStringDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CKeyStringDlg::OnFileselect() { CFileDialog oFileDlg( TRUE ); oFileDlg.DoModal(); m_szFileName = oFileDlg.GetPathName(); GetDlgItem( IDC_FILE )->SetWindowText( m_szFileName ); } void InsertTabs( FILE * pFile, int Nb ) { int i; for( i=0 ; iShowWindow( SW_SHOW ); ((CWnd *) GetDlgItem( IDC_VIEW ) )->ShowWindow( SW_HIDE ); fprintf( pLogFile, "--------------------------------------------\n" ); fprintf( pLogFile, " Key Positions \n" ); fprintf( pLogFile, "--------------------------------------------\n" ); fprintf( pLogFile, "[File ]> %s\n", m_szFileName ); fprintf( pLogFile, "[Key String ]> " ); ((CEdit *) GetDlgItem( IDE_STRING ))->GetWindowText( szSequence, 255); pProgress = ((CProgressCtrl *) GetDlgItem( IDC_PROGRESS )); iSeqLength = strlen( szSequence ); iPos = 0; iSeqPos = 0; pProgress->SetRange( 0, iSeqLength ); fseek( pDataFile, -1, SEEK_END ); iPos = ftell( pDataFile ); while( (iSeqPos < iSeqLength) && (iPos > 0) ) { if( fgetc( pDataFile ) == szSequence[ iSeqPos ] ) { fprintf( pLogFile, "%c", szSequence[ iSeqPos ] ); d_lPositions[ iSeqPos ] = iPos; iSeqPos ++; pProgress->SetPos( iSeqPos ); } fseek( pDataFile, -2, SEEK_CUR ); iPos = ftell( pDataFile ); } fprintf( pLogFile, "\n--------------------------------------------\n" ); fprintf( pLogFile, "\n" ); //--- Creating IA-Like file --- fprintf( pLogFile, "TestProtection := faux\n" ); for( iCpt = 0 ; iCpt < iSeqLength ; iCpt++ ) { fprintf( pLogFile, "si ( PRO_LitValeurPositionCle( %i ) = %i )\n", d_lPositions[ iCpt ], szSequence[ iCpt ] ); InsertTabs( pLogFile, iCpt ); fprintf( pLogFile, "alors\t" ); } fprintf( pLogFile, "TestProtection := vrai\n" ); for( iCpt = iSeqLength ; iCpt > 0 ; iCpt-- ) { InsertTabs( pLogFile, iCpt-1 ); fprintf( pLogFile, "finsi\n" ); } if( iSeqPos < iSeqLength ) MessageBox( "Unable to find the full KeyString in file.", "Error", MB_OK | MB_ICONSTOP ); else MessageBox( "The full KeyString has been found.", "Operation Successful", MB_OK | MB_ICONEXCLAMATION ); fclose( pLogFile ); fclose( pDataFile ); pProgress->SetPos( 0 ); ((CWnd *) GetDlgItem( IDC_PROGRESS ) )->ShowWindow( SW_HIDE ); ((CWnd *) GetDlgItem( IDC_VIEW ) )->ShowWindow( SW_SHOW ); if( ((CButton *)GetDlgItem( IDC_VIEW ) )->GetCheck() ) ShellExecute( NULL, NULL, "Notepad.exe", m_szLogFileName, NULL, SW_SHOW ); } } } void CKeyStringDlg::OnUpdateFile() { ((CEdit *)GetDlgItem(IDC_FILE))->GetWindowText( m_szFileName ); } void CKeyStringDlg::OnLogfileselect() { CFileDialog oFileDlg( FALSE, "*.log", "KeyString.log", OFN_OVERWRITEPROMPT, "Log Files (*.log) |*.log| All Files (*.*) |*.*||", NULL ); oFileDlg.DoModal(); m_szLogFileName = oFileDlg.GetPathName(); GetDlgItem( IDC_LOGFILE )->SetWindowText( m_szLogFileName ); } void CKeyStringDlg::OnUpdateLogfile() { ((CEdit *)GetDlgItem(IDC_LOGFILE))->GetWindowText( m_szLogFileName ); }