일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- WIN32 SDK
- c#
- SDK
- Visual Studio 2005
- 초보
- MySQL
- 데이터베이스
- xml
- PostgreSQL
- 인스톨
- Firebird
- 기초
- 설치
- Delphi
- MFC
- 파라미터
- 셋업
- VB.NET
- 델파이
- dll
- 문자열
- 소니
- vb
- 시리얼 통신
- 입문
- 예제
- SQL
- 파이어버드
- Visual Basic
- winsock
- Today
- Total
목록MFC (15)
프로그래밍 노트
■ 시리얼 포트 오픈 시리얼 포트는 파일처럼 다룬다. 시리얼 포트를 오븐 하기위해서는 CreateFile()을 사용한다. HANDLE CreateFile( LPCTSTR lpFileName, // 포트 이름을 가르키는 버퍼의 포인터 DWORD dwDesiredAccess, // 억세스모드(READ, WRITE) DWORD dwShareMode, // 포트의 공유 방법 비정(공유 불가: 0으로 설정) LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 시큐리티 속성 DWORD dwCreationDisposition, // 포트 여는 방법 지정(OPEN_EXISTING로 기존 파일 지정) DWORD dwFlagsAndAttributes, // 포트의 속성 지정 HANDLE h..
설명은 따로 필요없을 것같다. 그냥 밑에 소스를 보면.... void main() { int nDec = 0; char szHex[16]; // 16진수를 10진수로 sprintf(szHex, "FF"); nDec = (int)strtol(szHex, NULL, 16); printf(" %s -> %d \n", szHex, nDec); nDec = nDec - 0xF; // 10진수를 16진수로 sprintf(szHex, "%X", nDec); printf("%d -> %s \n", nDec, szHex); } 실행한 결과 FF -> 255 240 -> F0 strtol 함수를 알면 16진수를 10진수로 바꾸는 것을 한줄에 끝낼 수 있는데 저 함수를 모르면... sprintf의 포멧에서 %X를 쓰느냐 %..
■ 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'..
msado15.dll을 이용해서 MFC에서 ADO로 데이테베이스 억세스하기 여기서 데이터베이스는 MySQL을 썼다. 다른 데이터베이스를 쓸때는 접속 문자열을 바꾸어 주면 될 것같다. 예제는 hong 데이터베이스의 animal 테이블의 필드명과 데이터를 직접 실행 창에 출력하는 예제이다. TRACE함수는 MFC의 함수라는 것을 이번에 처음 알았다. -.-;; #include "stdafx.h" #include "stdio.h" #include "io.h" // ADO DLL 임포트 #import "C:\Program files\Common Files\System\Ado\msado15.dll" no_namespace rename("EOF", "ADOEOF") int main() { HRESULT hr; //..
◆ char에서 CString으로 바꾸기 char에서 CString으로 바꿀때는 아래 소스와 같이 그냥 char 변수의 데이터를 CString 변수에 대입하면 된다. 그러면 CString은 "="연산자를 오버로드하여 실제로는 memcpy를 한다. char szTemp[8] = "TEST!!!"; CString csTemp; csTemp = szTemp; ◆ CString에서 Char로 바꾸기 그냥 strcpy를 써서 문자열을 카피하면된다. 단 CString에서 char 문자열에 카피할때는 char의 크기가 CString의 크기보다 반드시 커야한다. 그래서 아래와 같이 new를 쓰면 가변적으로 문자열에 카피할 수 있다. new를 쓸때는 반드시 delete를 해야하는 것을 잊지말자. CString csTem..
프로젝트를 단일문서로 만든다. 프로젝트를 안일문서로 만들때, 사용자 인터페이스 기능에서 도구모음에서 없음을 선택한다. 초기상태 표시줄은 필요에 따라 체크를 넣는다. SDI를 다이얼로그 처럼 쓰기위해서 가장 중요한 작업은 아래 그림의 화면(생선된 클래스)에서 기본 클래스를 CFormView로 선택하는 것이다. CFormView를 선택하면 리소스에 Dialog에 IDD_SDICTRL_FORM가 생겨 여기에 컨트롤을 추가할 수있다. 이렇게 SDI로 다이얼로그처럼 만들어 쓰면 좋은 것이 크기를 변경할 수 있다는 것이 좋은 것같다. 하기야 다이알로그의 크기가 바뀌며 그 안에 컨트롤들의 바꾸기위해서는 공부를 더 해야겠지만... 그리고 이렇게 프로젝트를 만들면 메뉴가 모이기 때문에 메뉴를 없애기 위해서는 C***Ap..