'API & MFC/MFC & COM'에 해당되는 글 15건

  1. 2010.03.10 디버그모드 & 릴리즈모드
  2. 2010.03.10 사운드출력함수
  3. 2010.03.10 좌표가 영역안에 있는지 확인
  4. 2010.03.08 UpdateData함수
  5. 2010.03.04 각 클래스에서 객체 얻기
프로젝트를 컴파일하여 실행 파일을 만드는 방법에는 디버그/릴리즈 두 가지가 있다.

 디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우, 특기 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 프로그램이 죽는 경우가 있는데 이런 경우는 대부분 메모리가 깨진 경우에 발생한다. 두 모드에서 동적으로 메모리를 할당하면 힙 영역에 요청한 크기만큼 메모리를 할당 받게 되는데 그 초기값이 다르다.

릴리즈 빌드의 경우 할당된 메모리 영역을 초기화하지 않는 경우 바로 할당되기 직전의 쓰레기 값이 그대로 사용되는 반면 디버그 빌드의 경우 디버거로 디버깅하는데 블록을 구분하기 위해 0xCC, 0xDD와 같은 값으로 초기화된다.

 

디버그 모드

 실행 파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 프로젝트 디렉토리 아래에 Debug 서브 디렉토리에 실행 파일을 만들어 준다. 디버깅 정보가 들어가 있기 때문에 실행 파일의 상태를 확인할 수 있다.

 

릴리즈 모드

 일체의 디버깅 정보를 삽입하지 않을 뿐만 아니라 코드를 최적화하여 실행 파일 크기를 최대한 줄여준다. 릴리즈 모드로 만든 실행 파일로는 디버깅을 할 수 없지만 속도나 크기면에서는 디버그 모드로 만든 실행 파일보다 월등히 유리하다. 모든 버그를 잡고 개발이 완료되었을 때는 릴리즈 모드로 컴파일해야 한다.

 

 

출처 www.winapi.co.kr

'API & MFC > MFC & COM' 카테고리의 다른 글

SDK와 MFC  (0) 2010.03.11
프로퍼티시트 적용&도움말 지우기  (0) 2010.03.11
사운드출력함수  (0) 2010.03.10
좌표가 영역안에 있는지 확인  (0) 2010.03.10
UpdateData함수  (0) 2010.03.08
Posted by 아몰라
BOOL PlaySound(
LPCSTR pszSound,
HMODULE hmod,
DWORD fdwSound );


#pragma comment(lib, "winmm")
#include <mmsystem.h>

/* 경로를 설정하여, wave 파일을 재생하고자 할때 */
PlaySound("c:\test.wav" , NULL, SND_ASYNC);
/* wave 파일을 리소스에 등록 후, 재생하고자 할 때  */
PlaySound((LPCSTR)MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_ASYNC | SND_RESOURCE);


SND_NODEFAULT - 파일이 없을때 경고음 안울리게!!

정지
PlaySound(NULL, NULL, NULL);

첫번째 인자 : 연주할 파일 이름
두번째 인자: 연주할경우 리소스를 가진 실행파일의 핸들
세번째 인자: 기타 옵션을 지정
SND_ASYNC - 비동기화된연주를 하는겁니다,,예를 들어서 음악이 재생돼면서 다른작업을 동시에 할때이것을 쓴다. SND_SYNC -  동기화된연주 즉 이렇게설정을 하면 프로그램은 이곡이 끝나기전까지는 아무반응을 안한다.
SND_LOOP - 반복연주한다는 뜻
SND_RESOURCE - 리소를 사용할때 사용한다.

'API & MFC > MFC & COM' 카테고리의 다른 글

프로퍼티시트 적용&도움말 지우기  (0) 2010.03.11
디버그모드 & 릴리즈모드  (0) 2010.03.10
좌표가 영역안에 있는지 확인  (0) 2010.03.10
UpdateData함수  (0) 2010.03.08
각 클래스에서 객체 얻기  (0) 2010.03.04
Posted by 아몰라
rect에

CRect rect;
 GetDlgItem(IDB_BITMAP2)->GetWindowRect(&rect);
 ScreenToClient(&rect);

이런식으로 일정 영역을 구해놓고

확인해보고싶은 좌표를 인자로 넣어주면

rect.PtInRect(point);

영역안에 들어가는지 안들어가는지

bool로 반환해준다.

'API & MFC > MFC & COM' 카테고리의 다른 글

프로퍼티시트 적용&도움말 지우기  (0) 2010.03.11
디버그모드 & 릴리즈모드  (0) 2010.03.10
사운드출력함수  (0) 2010.03.10
UpdateData함수  (0) 2010.03.08
각 클래스에서 객체 얻기  (0) 2010.03.04
Posted by 아몰라



DDX로 에디트와 변수를 묶어주고 UpdateData로 True를 줬을때는 변수로 false일 때는 에디트로 업데이트를 해준다.

'API & MFC > MFC & COM' 카테고리의 다른 글

프로퍼티시트 적용&도움말 지우기  (0) 2010.03.11
디버그모드 & 릴리즈모드  (0) 2010.03.10
사운드출력함수  (0) 2010.03.10
좌표가 영역안에 있는지 확인  (0) 2010.03.10
각 클래스에서 객체 얻기  (0) 2010.03.04
Posted by 아몰라

 

 

 

각 클래스에서 객체 얻기

 

 

 

MainFrame 얻기

CMainFrame *pFrame = (CmainFrame *) AfxGetMainWnd();

 

App 포인터 얻기

CTestApp *pApp = (CtestApp *) AfxGetApp();

 

Document 포인터 얻기(새로 만든 클래스에서 얻어올때)

#include "TestDoc.h"

#include "MainFrm.h"

 

CTestDoc *pDoc = (CTestDoc*)((CMainFrame *)AfxGetMainWnd())->GetActiveDocument();

 

GetParentFrame에서 GetActiveDocument 찾기

CDrawDoc * pDoc = (CDrawDoc*)GetParentFrame()->GetActiveDocument();

 

View 포인터 얻기(새로 만든 클래스에서 얻어올때)

#include "TestView.h"

#include "MainFrm.h"

CTestView *pView = (CTestView*)((CMainFrame *)AfxGetMainWnd())->GetActiveView();

 

자식 Dialog에서 부모 Dialog 포인터 얻기

CParent* pDlg = (CParent*)GetParent();

 

부모 Dialog에서 자식 Dialog 포인터 얻기

CChild dlg.m_variant;

 

CView에서 CDocument 객체 얻어올때

GetDocument()

 

CView에서 CFrameWnd 객체 얻어올때

GetParentFrame()

 

CDocument에서 CView객체 얻어올때

GetFirstViewPosition(), GetNextView()

 

CFrameWnd에서 CView 객체 얻어올때

GetActiveView()

 

CFrameWnd에서 CDocument 객체 얻어올때

GetActiveDocument()

 

Afx로 시작하는 함수는 전역함수라 어디서든 사용가능

AfxAbort()

어플리케이션 무조건 종료

AfxMessageBox()

메시지 상자를 표시

AfxGetApp()

어플리케이션 객체의 포인터 리턴

AfxGetAppName()

어플리케이션 명을 리턴

AfxGetMainWnd()

메인 프레임 윈도우 포인터 리턴

AfxGetInstanceHandle()

현재 인스턴스 핸들 리턴



'API & MFC > MFC & COM' 카테고리의 다른 글

프로퍼티시트 적용&도움말 지우기  (0) 2010.03.11
디버그모드 & 릴리즈모드  (0) 2010.03.10
사운드출력함수  (0) 2010.03.10
좌표가 영역안에 있는지 확인  (0) 2010.03.10
UpdateData함수  (0) 2010.03.08
Posted by 아몰라
이전버튼 1 2 이전버튼