일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Visual Studio 2005
- PostgreSQL
- 초보
- dll
- Visual Basic
- 설치
- Delphi
- vb
- 예제
- winsock
- 입문
- 파이어버드
- MySQL
- 데이터베이스
- VB.NET
- 셋업
- 기초
- 파라미터
- 소니
- c#
- SDK
- 인스톨
- 델파이
- Firebird
- xml
- SQL
- MFC
- 시리얼 통신
- WIN32 SDK
- 문자열
- Today
- Total
목록MFC TIP (20)
프로그래밍 노트
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; //..
MFC의 동적배열 CArray의 간단한 예제 특별히 다른 설명이 없이 소스만 봐도 그렇게 이해하기 힘들지는 않을 것같다. class CParam { public: CString csFuncID; long nID1; BOOL bReturn; }; void CArrayTest() { long nCount; // 동적 배열 설정 CArray caParam; CParam cpTemp; CParam cpGetData; // 배열 사이즈 설정 caParam.SetSize(0); cpTemp.csFuncID = "TEST0"; cpTemp.nID1 = 0; cpTemp.bReturn = TRUE; // 배열에 요소 추가 caParam.Add(cpTemp); cpTemp.csFuncID = "TEST5"; cpTemp..
나는 VB를 먼저해서 그런지 C의 포인터를 이해하는데 시간이 많이 걸렸던 것같다. 머리가 안좋아서 그런지 포인터를 설명을 들어도 책을 읽어도 이해가 오는데 시간이 많이 걸렸다. 지금도 남에게 포인터를 설명하라고 그러면 그리 속시원하게 알려주지는 못하는 것같다. 포인터의 설명을 들어도 왜 포인터를 써야하는지에 대해서 이해를 특히 못했던 것같다. VB에서 프로그램을 짜다보면 종종 인수를 ByRef로 넘길때가 있다. ByRef가 이해가 간다면 그나마 포인터를 조금이나마 이해하기 쉬울 것같다. 포인터에 대한 자세한 설명은 이곳이 아니고라도 자세하게 써있는 곳이 많이 있으니까 여기에서는 VB의 ByVal, ByRef의 예제와 VC에서의 CString을 인수로 넘길때 포인터를 쓰고 안쓰고에 따라 어떻게 달라지는가에..
◆ 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..
프로젝트를 SDI로 만들었을 때 ◆ 윈도우의 스타일 바꾸기 CMainFrame클래스의 PreCreateWindow()함수에서 밑의 소스 노랑 상자같이 기술한다. 반드시 CMainFrame클래스의 PreCreateWindow()함수에 기술해야된다. PreCreateWindow()함수는 CMainFrame클래스 이외의 클래스에도 있다. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: CREATESTRUCT cs를 수정하여 여기에서 // Window 클래스 또는 스타일을 수정합니다. cs.style = WS_MINIMIZEBOX | WS_SYSMENU | ..
MFC에서 대화 상자 기반으로 프로젝트를 만들어서 실행시키면, 그 다이얼로그에서 Enter키나 ECS키를 누르면 다이얼로그가 종료하게된다. 이것을 막으려면 PreTranslateMessage를 쓰면 가능하다. PreTranslateMessage를 쓰려면 ***Dlg.h에서 밑에 있는 노랑상자에 있는 코드를 추가한다. class CTestDlg : public CDialog { // 생성입니다. public: CTestDlg (CWnd* pParent = NULL); // 표준 생성자입니다. virtual BOOL PreTranslateMessage(MSG* pMsg); // 대화 상자 데이터입니다. enum { IDD = IDD_TEST_DIALOG }; protected: virtual void DoD..
윈도우가 뜨기 전에 해야할 작업이 있을 때가 있다. 윈도우가 뜨기 시작할 때 호출되는 함수는 단일문서(SDI), 다중문서(MDI)와 같은 함수가 호출되지만 대화 상자 기반(Dialog)의 경우는 다른 함수가 호출된다. - - - - - - - - - - - - - - - ◆ 단일문서(SDI), 다중문서(MDI) View가 Document에 처음으로 연결된후, View가 처음 뜨기전에 호출 되어짐 C***View파일 void CStartProcessView::OnInitialUpdate() { // : // : // : } OnInitialUpdate()와 디폴트로 선언되지 않으므로 C***View.cpp와 C***View.h파일에 추가할 필요가 있음 - - - - - - - - - - - - - - - ..
MFC에서 커서를 모래시계로 바꾸기는 아주 싶다. ====================================================================== // 커서를 모래시계로 BeginWaitCursor(); Sleep(1000); MessageBeep(-1); // Beep // 커서를 디폴트 커서로 EndWaitCursor(); ======================================================================
경고 2 warning C4996: 'sprintf'이(가) deprecated로 선언되었습니다. d:\data\tsource\mfclog\mfclog.cpp 108 보안(security)을 강화하면서 예전 함수에는 워닝을 띄우나보다. -.-;; 워닝이 떠도 특별히 문제없이 쓸수는 있다고 한다. deprecate 뜻을 몰라 찾아봤다. deprecate :~을 옳지 않다고 역설하다., 계획 따위에 반대하다. MS는 하기 왼쪽에 있는 함수들을 옳지않다고 생각하고 있나보군 -.-;; MS에는 밑에 같이 쓰면 저 워닝은 표시안다고 했는데 잘안된다. #define _CRT_SECURE_NO_DEPRECATE 1 밑에 같이 써주면 워닝이 표시되어지지않는다. #pragma warning(disable:4996) 워닝..