일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SQL
- vb
- WIN32 SDK
- PostgreSQL
- MySQL
- Delphi
- 초보
- SDK
- 데이터베이스
- 델파이
- winsock
- MFC
- 인스톨
- 설치
- 예제
- dll
- 파이어버드
- 입문
- 셋업
- Visual Basic
- 파라미터
- Visual Studio 2005
- 문자열
- c#
- xml
- 소니
- 기초
- VB.NET
- Firebird
- 시리얼 통신
- Today
- Total
목록MFC TIP (20)
프로그래밍 노트
■ 타임아웃 통신 제어 프로그램은 상대 장치의 상태에 따라 통신이 도중에 끊어질 수 있다. 만약 100바이트가 올것이 데이터 수신 중에 송신 쪽의 문제로 80바이트만 송신한 경우 수신을 도중에 멈추고 알람을 표시할 필요가 있다. 타이머는 이런 목적으로 사용한다. 타이머의 설정은 SetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts) 를사용하고 설정된 데이터를 읽을 때는 GetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts)를 사용한다. SetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts) 인수 hFile : CreateFile()이 반환한 핸들..
■ 시리얼 포트 설정 시리얼 I/O의 파라미터 설정은 SetCommState()로 하고 GetCommState()로 설정된 파라미터 정보를 볼 수 있다. BOOL SetCommState( HANDLE hFile, // 통신 디바이스 핸들 LPDCB lpDCB // DCB 구조체 포인터 }; 인수: hFile: CreateFile()에서 반환된 핸들 lpDCB: 현재 설정된 다비아스 상태를 가지고 있는 DCB 구조체 포인터 반환값 성공하면 0이 아니고 실패하면 0 BOOL GetCommState( HANDLE hFile, // 통신 디바이스 핸들 LPDCB lpDCB // DCB 구조체 포인터 }; 인수: hFile: CreateFile()에서 반환된 핸들 lpDCB: 현재 설정된 다비아스 상태를 가지고 ..
■ 시리얼 포트 오픈 시리얼 포트는 파일처럼 다룬다. 시리얼 포트를 오븐 하기위해서는 CreateFile()을 사용한다. HANDLE CreateFile( LPCTSTR lpFileName, // 포트 이름을 가르키는 버퍼의 포인터 DWORD dwDesiredAccess, // 억세스모드(READ, WRITE) DWORD dwShareMode, // 포트의 공유 방법 비정(공유 불가: 0으로 설정) LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 시큐리티 속성 DWORD dwCreationDisposition, // 포트 여는 방법 지정(OPEN_EXISTING로 기존 파일 지정) DWORD dwFlagsAndAttributes, // 포트의 속성 지정 HANDLE h..
정말 이상하다. 내가 머리가 나쁜건가? Visual Studio 2005의 Visual C++은 Relese로 빌드를 하고 그 실행 파일만을 Visual Studio 2005가 설치 되어있지않은 컴퓨터에서 돌리면 에러가 난다. Visual Studio 2005의 Visual C++로 빌드한 실행 파일을 돌리기 위해서는 여러가지 뭔가를 해주어야되나보다. 왜 MS는 이렇게 만들었을까? 이게 더 좋아진건가? 무엇이 어떻게 더 좋아진것일까? 난 머리가 딸려서 이해가 잘안온다. MSDN> MSDN HomeMSDN LibraryMSDN LearnMSDN DownloadsMSDN SupportMSDN CommunityMSDN Library> Visual Studio 2005.NET FrameworkSQL Server..
Visual Studio 2005에는 클래스 위져드가 없어졌다. 다이알로그에서 OnTimer 메세지 함수 추가하려고 그냥 코드에서 OnTimer를 추가해 보았지만 이벤트가 발생하지 않았다. -.-;; 그래서 열심히 찾다 보니까 메세지 함수를 추가하는 방법이 있었다. 먼저 메세지 함수를 추가하려는 다이알로그를 클래스 뷰에서 선택한다. 선택한 다이알로그에서 Alt + Enter를 누르던가 오른쪽 클릭을 해서 속성을 선택하면 아래같이 속성창이 나타난다. 속성창에서 밑에 메세지를 선택하면 메시지 리스트가 표시된다. WM_TIMER를 선택하면 OnTimer가 표시되고 OnTimer를 선택하면 아래 그림과 같이 OnTimer함수가 추가되어진다.
■ MFC에서 컨트롤의 탭 순서 바꾸기 탭 순서는 Tab키를 눌렀을 때 선택된 커트롤에서 다음 컨트롤로 이동하는 순서이다. VB에서는 프러퍼티에서 TabIndex를 바꾸면 각 컨트롤의 탭순서를 바꿀수 있다. 각 컨트롤에서 Tab으로 이동할찌 안할찌는 Tabstop속성으로 정한다. 탭순서를 MFC에서 변경할 때는 탭 순서를 지정할 다이알로그를 선택하고 메뉴의 서식에서 탭순서를 선택하거나 Ctrl + D를 누른다. 그러면 아래의 그림처럼 표시되어진다. 저렇게 표시된 숫자를 클릭한 순서대로 순서가 바뀌어진다.
VB랑 다르게MFC에서는 에디트 박스를 쓰는게 좀 귀찮다. 프로젝트를 MFC 응용프로그램으로 선택해서 만들고 응용 프로그램 종류에서 대화 상자 기반을 선택하여 프로젝트를 만든다. 프로젝트를 만든후, 리소스 뷰에서 Dialog 밑에 다이알로그 박스를 선택한다. 도구 상자에서 다이알로그에 에디트 컨트롤을 두개 만든다. 만든 에디트 컨트롤을 선택하여 속성창을 열어 ID를 변경한다. 솔루션 탐색기에서 자동으로 만들어진 헤더파일(EditBoxDlg.h : 프로젝트 명을 어떻게 주느냐에 따라 헤더 파일 이름이 달라진다.)에 에디트 컨트롤 변수를 public에 추가한다. // EditBoxDlg.h : 헤더 파일 // #pragma once // CEditBoxDlg 대화 상자 class CEditBoxDlg : p..
C/C++ 분산 어플리케이션 및 side-by-side 어셈블리 트러블 슈팅 (Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies) 의존하는 Visual C++ 라이브러리가 발견되지않는 겨우는 C/C++ 어플리케이션의 읽어들이기에 실해하는 경우가 있다. 발생하는 가능성이 있는 런타임 에러의 일람에 관해서는 "Visual C++파일의 재배포"를 참조하면 된다. 이 섹션에서는 C/C++ 어플리케이션의 읽어들이기에 실패하는 가장 일반적인 이유에 대해서 문제해결의 방법을 알아본다. Visual C++가 인스톨되어 있지 않은 컴퓨터에 어플리케이션을 카피하고 "Visual c++파일 재배포"에 열거되어진 에러 메세지로 어플리케이션이 크래쉬..
파일을 암호화 . 복호화하기 ◆ 윈도우즈 API를 이용하여 파일 암호화하기 #include // 파일관련 #include // 암호화 : // 암호화 버튼을 클릭했을 때 void CCiperFileDlg::OnBnClickedEncode() { BYTE *bBuff; DWORD dwFileLen; CString csFile; FILE *pFile; m_File.GetWindowText(csFile); // 선택한 파일을 바이너리 형식으로 열기 pFile = fopen(csFile, "rb"); if(!pFile) { AfxMessageBox("파일읽을때 에러났어"); return; } dwFileLen = _filelength(fileno(pFile)); bBuff = new BYTE [dwFileLen..
msado15.dll을 import하여 MFC로 DLL을 만들때 빌드하면 아래와 같은 형식 재정의 에러가 뜬다. 오류 1 error C2011: 'LockTypeEnum' : 'enum' 형식 재정의 d:\data\source\adll\adll\debug\msado15.tlh 228 오류 2 error C2011: 'DataTypeEnum' : 'enum' 형식 재정의 d:\data\source\adll\adll\debug\msado15.tlh 276 오류 3 error C2011: 'FieldAttributeEnum' : 'enum' 형식 재정의 d:\data\source\adll\adll\debug\msado15.tlh 321 오류 4 error C2011: 'EditModeEnum' : 'enum'..