Vector 사용법 #include #include using namespace std; int main() { int i; int num =10; vector vi; for(i = 0;i < num;i++) { vi.push_back(i*2); //vi[i] = i*2; } for(i = 0;i < num;i++) { printf("vi[%d] = %d\n",i,vi.at(i)); //vi[i]도 됨 } printf("size of vector : %d\n",vi.size()); return 0; } List 사용법 #include #include using namespace std; int main() { list li; int i; for(i = 0;i < 5;i++) { li.push_back(i..
1. 더블 버퍼링에 대하여 더블버퍼링은 WM_PAINT에서 해주는 일을 간략화 시켜주기 위해! 다른 곳에서 미리 BITMAP에다가 다 그려놓고 WM_PAINT에서는 해당 BITMAP을 불러와주는 일만 해주도록 하는 것. MFC의 경우엔 CBitmap을 사용한다 클래스 내에 CBitmap m_BitmapBG; 뭐 이런식으로 하나 만들고 다른 함수 (예를 들어 고정 배경이라면 Init부분에서)에서 MemDC를 만들어 SelectObject로 m_BitmapBG를 선택한 후 그리기를 완료한다. 이 때 중요한 점은 CBitmap.DeleteObject()를 하면 안된다는 것! 이건 WM_DESTROY시에 해줘야 한다. 여튼.. m_BitmapBG에 그리기를 완료하고나서는 WM_PAINT에서는 m_BitmapBG..
CDialog를 상속받은 CParentDlg가 있을 때 CParentDlg를 상속받은 CChildDlg를 만들어보자~ 예제도 있으니 다운 받아도 되고 안받아도 되고.. vs2008에서 컴파일했음. 생각같아선 그냥 class CChildDlg : public CParentDlg { ... }; 해주면 될 것 같은데 이게 끝이 아니다. 우선 부모가될 Parent 다이얼로그에서는 MFC Wizard가 만든 기본 생성자 외에 CParentDlg::CParentDlg(UINT nIDTemplate, CWnd* pParent) 를 추가해야한다. 생성자 내용은 CParentDlg::CParentDlg(UINT nIDTemplate, CWnd* pParent) : CDialog(nIDTemplate, pParent) ..
다이얼로그로 대화창을 만들고, 에디트 버튼이나, 기타 엔터키 입력을 받는 콘트롤을 올려 놓을 경우에, 다이얼로그에서 먼져 엔터키를 받아서 OnOK();가 호출되어 걍 ~~ 죽죠. 이 부분을 막아 보겠습니다. 1. 리소스 부분에서 IDOK 부분을 다른 리소스로 변환합니다. IDOK -- > IDC_BUTTON_ACCEPT #define IDC_BUTTON_ACCEPT 1150 //(이건 Resource.h에 있음) 2. IDC_BUTTON_ACCEPT의 핸들러 OnAccept();를 만들죠.. void CConfigDlg::OnAccept() { // Add code here.. CDialog::OnOK(); } 3. 그 핸들러에 IDOK 의 디폴트 핸들러를 호출합니다. (위에서 같이요: CDialog::..
버튼 모양을 맘대로 만들어 줄 때.. Bitmap으로 바꿔주기 위해 사용한다. Owner Draw라는 기법(?)인데 Combo, List, Button에 사용한다. 버튼으로 예를 들면 Dialog에 Button을 그린 후 Add Variation해서 CButton으로 등록한다. 이름을 m_btnTest로 했으면 CButton m_btnTest로 돼있을텐데 여기서 CButton을 강제로 CBitmapButton으로 바꿔준다. (CButton을 상속받은 클래스이다.) 버튼의 4가지 상태를 등록할 수 있는데, 가만히 있을때(U), 눌렸을 때(D), 포커스가 갔을때(F), 무효됐을때(D) 이렇게 4가지이다. 각각의 Bitmap을 Resource에 import한다. 그 후 OnInitDialog() 함수에다가 아..
사소하지만 자주 쓰이는 것들. 예를 들어 Doc/View간에 서로 핸들 얻기, DLL 함수 정의, 각 컨트롤 사용하기(List, Progress Bar 등), 창 크기 및 위치 정보 구하기 등을 적어놓았음. 1. DC얻기 CClientDC dc(this); 2. Client 영역 구하기 GetClientRect(&rect); WM_SIZE 메시지발생후 cx,cy 사용 3. 문자열 사각형안에 그리기 pDC->DrawText(문자열,사각형,Style); Style: DT_BOTTOM - 문자열을 사각형 맨아래줄에배열 반드시 DT_SINGLELINE과 함께사용 DT_CENTER - 문자열을 가로중앙에 배치 DT_VCENTER - 문자열을 세로중앙에 배치 DT_LEFT,RIGHT - 문자열을 좌,우로 배치 DT..
일반적으로 MFC등과 같은 프로그램을 개발할 때, "C:\Program Files\..."와 같은 파일 위치를 참조하거나 레지스트리의 HKLM/softwoare/... 등의 키를 참조하는 등의 일을 진행한다. 더 나아가서는 C:\Windows\System32\drivers\etc\hosts 와 같은 파일을 읽거나 쓰는 등의 일을 담당할 수도 있다. XP 이하, 9x, NT, 200x 등에서 어드민 계정으로 로그인 하여 아무 이상없이 작동하던 코드가 있다면, 이를 비스타 하에서 재 컴파일하서 돌려보면 제대로 되기는 커녕, 시스템 call에서 계속 에러가 발생하기 쉽다. 가장 큰 이유는, 기존과 같이 로그인 한 계정이 admin계정이면 거기에서 실행되는 모든 프로그램은 모두 admin 계정을 갖는 기존 경우..
MFC에서 다이얼로그 내에 컨트롤의 위치 좌표를 구하려는데.. 왠지 GetClientRect일것 같은데 이건 위치는 안구하고 크기만 구한다. GetWindowRect를 하면 바탕화면 전체 대비 컨트롤 위치가 나온다. 그렇다면 .. 쉽게 this->GetWindowRect로 구한 좌표해서 컨트롤.GetWindowRect 로 구한 좌표를 빼주면 땡 아닌가? 근데 이러면 간지가 안난다.. Static Control을 m_static으로 변수 추가 한 후 CRect rect; m_static.GetWindowRect(&rect); ScreenToClient(&rect); 해주면 위치 딱 나온다~ 근데 문제는 제목 표시줄 크기는 제외하고 구하기 때문에 결국에 보정은 해줘야 한다는거;;;
- Total
- Today
- Yesterday
- Python
- Troubleshooting
- it
- NDK
- 안드로이드
- winapi
- linux
- Visual C++
- android
- Quiz
- C++
- db
- kering
- AWS
- 리눅스
- Cloud
- source
- jni
- C
- gcc
- 프로그래밍
- MFC
- driver
- algorithm
- API
- 음악
- database
- jni강좌
- 드라이버
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |