CString s_temp;

CWnd* cWnd = GetForegroundWindow();  //가장 상위의 윈도우 핸들을 구한다.

cWnd->GetWindowText(s_temp);            //윈도우의 이름을 가져온다.

printf("\n window name %s \n", s_temp);





GetWindowText  설명 : http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms633520(v=vs.85).aspx



후킹으로 지속적인 이벤트가 발생할때 사용하면 안성맞춤.

키보드 후킹시 어떤 프로세서에서 들어온것인지 알수 있다.(물론 캡션에 나온 이름을 가져온다. - 실제 어떤 프로그램인지 이름으로는 알수 없다.)



저작자 표시
신고

'app > C' 카테고리의 다른 글

최상위 윈도우 이름 구하기  (0) 2012.12.23
winapi 환경에서 콘솔 띄우기  (2) 2012.12.17
iphone 시간 출력 하기!  (0) 2010.06.28
head first iphone 2장...-_- 슬슬 입질이 온다.  (0) 2010.06.25
head first iphone 1장~  (0) 2010.06.24
object-c 정리 그림!  (0) 2010.06.23

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

MFC에서 콘솔을 열기 위해서 #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") 를 선언하여 콘솔창을 띄운다면


winapi에서는 AllocConsole() 함수를 호출하여 콘솔을 띄웁니다.


AllocConsole() 설명 :  http://msdn.microsoft.com/ko-kr/library/ms681944(v=vs.85).aspx

기능은 한마디로 콘솔창을 불러옵니다. 문제는 창만 띄울뿐 핸들을 정해주지 않기 때문에 아무리 printf()를 써도 먹히지 않습니다. 


그래서 핸들 적용을 위해서 freopen() 함수를 사용합니다.

freopen() 설명 : http://msdn.microsoft.com/ko-kr/library/wk2h68td(v=vs.100)

freopen()함수는 해당 프로세서의 핸들값을 지정하여 여는 함수입니다. 결론적으로 아래의 함수를 적용하면 됩니다.


  AllocConsole() ;

  freopen("CONOUT$","wb",stdout);  //출력의 핸들에 따라 옵션이 달라집니다. 옵션은 아래 출처 확인.


이후 원하는 곳에 print()를 하면 됩니다.



출처/참조 : http://comsci.liu.edu/~murali/win32gui/Win32Apps.htm




저작자 표시
신고

'app > C' 카테고리의 다른 글

최상위 윈도우 이름 구하기  (0) 2012.12.23
winapi 환경에서 콘솔 띄우기  (2) 2012.12.17
iphone 시간 출력 하기!  (0) 2010.06.28
head first iphone 2장...-_- 슬슬 입질이 온다.  (0) 2010.06.25
head first iphone 1장~  (0) 2010.06.24
object-c 정리 그림!  (0) 2010.06.23

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 감사합니다. ㅇ_ㅇ'''
  2. ^-^ 댓글 감사합니다! winapi에다가 MFC식대로 썼다가 에러 떨어져서 당황해서 찾았던 겁니다.ㅎㅎ
secret
-_- 원본 :  http://www.appsamuck.com/day1.html 

근데... 버전이 옛날꺼라 컴파일이 안된다..-_- (에러가...3개가 나네..)
그래서 timer부분만 쓰고 날짜를 받아오는 것만 바꿔봤다.
다른 부분은 모두 위의 사이트에서 따라하면 되고(파일도 받을수 있고)

-(void)updateLabel {

NSDate *today = [NSDate date];

NSString *str=[NSString stringWithFormat:@"%@",today];

str = [str substringToIndex:20];

countdownLabel.text = str;

}


MinutesToMidninghtViewController.m에서 메소드 부분만 살짝 바꿔봤다.
str에서 substringToIndex 을 이용해서 뒤에 쓸데 없는 부분은 잘라냈다. 
(str 부분을 빼보고 today자체는 객체이기 떄문에 출력이 가능한데 해보면 그리니치 중심으로 +9시간이 표시가 된다.
그래서~ 문자열자르기로 잘라서 표시하게 했다.)

완성품


신고

'app > C' 카테고리의 다른 글

최상위 윈도우 이름 구하기  (0) 2012.12.23
winapi 환경에서 콘솔 띄우기  (2) 2012.12.17
iphone 시간 출력 하기!  (0) 2010.06.28
head first iphone 2장...-_- 슬슬 입질이 온다.  (0) 2010.06.25
head first iphone 1장~  (0) 2010.06.24
object-c 정리 그림!  (0) 2010.06.23

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
이제부터 슬슬 아이폰 고유의 개념이 나오기 시작하는구나.-_-

중요한건  데이터 소스 <-> 컨트롤 <-> 델리게이트에 이르는 컨트롤 커넥트및 이벤트 발생부분인거 같다.
(델리게이트는 따로 정리 해야겠다.)

그나마 X-code 기초강좌보면서 하니까 이해 가는데... 첨부터 모르는 상태에서 헤드퍼스트는 무리일듯;;

중요한 권한, 세터-게터, 메모리 부분을 그냥 훅 지나가 버리는데 뒤에 나올려나 모르겠다.
(요것도 하나씩 포스팅 할 정도로 많은데;; )

아! 잼있는걸 봤는데..
오브젝트C 가  C++보다 먼저 나왔다. -_- 만일 더 늦게 나왔다면 C++을 기초로 했을까?
-_-그러면 오버로딩이랑 함수 초기화도 간편했을텐데..

2장의 중요포인트
@ 피커는 델리게이트와 데이터소스가 있어야만 작동한다.
@ 프로토콜은 데이터소스및 델리게이트가 응답할 메시지를 정의한다.

이정도?



완성~

신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

head first iphone 1장~

app/C 2010.06.24 09:47
-_-정말....왜 아이폰 개발을 하고 있는거지?-_-ㅋㅋㅋ 안드로이드 하다가 어저따가;;;ㅋㅋㅋㅋ

확실히 코코아 스타일이 익숙치는 않은데.-_-

크게 안드로이드와 연결해보면은

UI는 안드로이드에선 XML이고 오브젝트C에선 xib 파일로 작성되며
코드는 안드로이드에선 자바기반이여서 java 이고 오브젝트C에선 C기반으로 .c or .m 헤더파일 .h 로 된다.

각 이벤트의 작동은
안드로이드는 인터페이스로 (혹은 확장으로) 받아서 xml에 있는 UI를 메소드와 연결해주는 리스너를 선언해주고
오브젝트C는 .m 에서 소스를 구성하고 .xib에서 이어주는 정도 (아직 딜리게이트부분을 않봐서..나중에 다시 정리해야겠따.)

확실히 언어의 차이보다는 프로그램 작성의 차이가 너무 크다. 
오브젝트C가 C를 기본으로 따르기 떄문에 몇몇 선언부분빼고는 같은데
이벤트의 리스너를 연결해주는게 나름 어려웠다;;(익숙치않아서;; 편하긴 하다.. 그냥 드래그만 하면 되니까.)

1장을 정리하면은
@ 인터페이스 빌더는 화면의 UI를 XML로 표현한 닙(xib)파일을 생성한다.
@ 코코아터치 프레임워크에 의해서 닙파일이 로드되고, 이때 해당 컴포넌트들이 클래스의 인스턴스로 생성된다.
@ 닙 파일에 들어있는 객체를 코드와 연결하기 위해서 IBOutlet 이나 IBAction으로 코드에서 지정해야한다.

버튼을 눌르면 안의 lable의 메시지가 바뀌는 간단한 예제.

신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

head first iphone 1장~

app/C 2010.06.24 09:47
-_-정말....왜 아이폰 개발을 하고 있는거지?-_-ㅋㅋㅋ 안드로이드 하다가 어저따가;;;ㅋㅋㅋㅋ

확실히 코코아 스타일이 익숙치는 않은데.-_-

크게 안드로이드와 연결해보면은

UI는 안드로이드에선 XML이고 오브젝트C에선 xib 파일로 작성되며
코드는 안드로이드에선 자바기반이여서 java 이고 오브젝트C에선 C기반으로 .c or .m 헤더파일 .h 로 된다.

각 이벤트의 작동은
안드로이드는 인터페이스로 (혹은 확장으로) 받아서 xml에 있는 UI를 메소드와 연결해주는 리스너를 선언해주고
오브젝트C는 .m 에서 소스를 구성하고 .xib에서 이어주는 정도 (아직 딜리게이트부분을 않봐서..나중에 다시 정리해야겠따.)

확실히 언어의 차이보다는 프로그램 작성의 차이가 너무 크다. 
오브젝트C가 C를 기본으로 따르기 떄문에 몇몇 선언부분빼고는 같은데
이벤트의 리스너를 연결해주는게 나름 어려웠다;;(익숙치않아서;; 편하긴 하다.. 그냥 드래그만 하면 되니까.)

1장을 정리하면은
@ 인터페이스 빌더는 화면의 UI를 XML로 표현한 닙(xib)파일을 생성한다.
@ 코코아터치 프레임워크에 의해서 닙파일이 로드되고, 이때 해당 컴포넌트들이 클래스의 인스턴스로 생성된다.
@ 닙 파일에 들어있는 객체를 코드와 연결하기 위해서 IBOutlet 이나 IBAction으로 코드에서 지정해야한다.

버튼을 눌르면 안의 lable의 메시지가 바뀌는 간단한 예제.

신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

object-c 정리 그림!

app/C 2010.06.23 16:04
+_+와우...몇일동안(정확히는 오늘 하루지만) object-c 를 배우면서 뭐...-_-쉽네?ㅋㅋ 뻥이고;;

몇몇개 선언부가 바뀐거 빼고는 또한 더럽게도 오버로딩이 안되는 거 빼고는 익숙한거 같다.

C와 스몰토크를 확장시켜서 만들어서그런지...괜찬은데? 쉽고.. -_- 아직 다 않배워서 그런가?ㅋㅋ

아니면 난 천재?!   



영어가 된다면 요기도!

근데 대체 왜 내거 컴터에서는 내꺼 블러그가 않들어가 지는거냐..-_-ㅋㅋㅋ
신고

WRITTEN BY
No.190
세계정복의 시작점

트랙백이 하나이고 , 댓글이 없습니다.
secret
정적 캐스팅 및 MFC 메시지 맵   Visual C++ .NET부터는 MFC에서 메시지 처리기 함수의 반환 형식 및 매개 변수 형식을 보다 엄격하게 검사합니다. 
이 새로운 동작은 안전하지 않은 메시지 처리기를 오류 메시지로 플래그를 지정하여 발생할 수 있는 문제를 개발자에게 알립니다.
ON_MESSAGE, ON_REGISTERED_MESSAGE, ON_THREAD_MESSAGE 및 
ON_REGISTERED_THREAD_MESSAGE에 대해 정적 캐스트를 사용합니다. 

예를 들어, 이전에는 개발자가 ON_MESSAGE 또는 ON_REGISTERED_MESSAGE에 대해 LRESULT 대신 void를 반환하는 멤버 함수를 사용하여 오류 없이 컴파일할 수 있었지만
Visual C++ .NET에서는 발생할 수 있는 캐스트 오류를 catch하여 오류로 플래그를 지정합니다.
 따라서 개발자는 반환 형식을 LRESULT로 바꾼 다음 다시 컴파일하여 해당 문제를 간단하게 해결할 수 있습니다. 

-------------------
위 내용은   .NET MSDN에서 발췌 했습니다.

헤더파일의 afx_msg void OnChangeVol(WPARAM wParam);  -> afx_msg LRESULT  OnChangeVol(WPARAM wParam); 
CPP에서도 동일하게 LRESULT라고 바꿔주면 됩니다.

참고 : LRESULT 는 MS VisualStudio\VC98\Include\WTYPES.H 에서 찾아볼수 있습니다.


이 에러는 6.0에서 사용자 메시지 WM_ 함수들은 void 형식이여도 상관없지만 .net 이후의 버전에서는 철저하게 검사하기 위해서 WM_ 함수들의 반환값을 LRESULT 로 해야하는 규정이란다. 

LRESULT - 콜백 함수나 원도우 프로시저가 return 하는 32bit 값


신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

MFC 더블 버퍼링

app/C 2010.04.20 19:28
-_-요즘에 프로젝트 하느라고 포스팅을 못했떠니..ㅎ
어쩄든 프로젝트에서 그리는걸 수행해야하는데..-0- 어쩝 이리 깜박거릴까.ㅎ
당연히 정답은 더블버퍼링(근데 이걸 메모리DC라고도 하나보네..)


짜잉나서 OnPaint 함수를 통째로 써버렸다..ㅋㅋ 
2008에선 다이얼로그로 프로그램시 기초적으로 코딩이 된 부분이 많아서 어지럽기도 한데
더블버퍼링 써저있는 곳부터 사용하시면 된다.


void CschoolzoneDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 아이콘을 그립니다.
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}


//더블 버퍼링 //
CClientDC dc(this); //윈도우 DC를 얻는다.
CDC MemDC;         //메모리 DC를 만듬.
CBitmap bitmap;
CBitmap *pOldBitmap;

MemDC.CreateCompatibleDC(&dc); // 윈도우DC와 메모리 DC호환.
bitmap.LoadBitmap(IDB_BITMAP1);//비트맵을 읽어 들임.
pOldBitmap = (CBitmap *)MemDC.SelectObject(&bitmap);//비트맵을 DC에 선택


//mapdivision(&MemDC);

dc.BitBlt(0, 0, 620, 620, &MemDC, 0, 0, SRCCOPY);//비트맵을 해당위치에 그려줌.
MemDC.SelectObject(pOldBitmap);//DC복원

}

나도 네이년이랑 구글 돌아다니면서 글어온거라..-0-;; 너무 많이 봐서 출처를 모르겠다. (다 하고 보니 창을 껏네.. 혹시나 누가 되신다면 댓글 달아주세요 삭제해드릴께요)

뭐 더블 버퍼링이 어떤 형식인지는 아실테고 난 좀더 쏘스를 함수화를 시켰다.
지금 이건 BITMAP을 읽고 뿌려주는건데 나머진
(BITMAP의 경우 리소스에서 원하는 비트맵을 추가만 해주면 된다.)
아랫쪽에 주석되어 있는 함수 mapdivision(CDC* memDC) 에 CDC 포인터를 받아서 
해당 함수에서 CDC로 그리는걸 추가한다음 DC로 그리게 만들었다.

결국 쏘스만 본따서 원하는 함수만 만들어주고 나 처럼 할려면 함수에 CDC포인터만 받고서 그리면 된다.
포인터로 받기 때문에 리턴도 필요없고, 함수가 끝나면 DC에서 그려주는 원리이다. 

흠....-_-알아서 잘 쓰시길..(사실 찾아보면 자료는 많은데 왜 난 사용을 못하지?ㅋㅋ 아직 멀었나 보다.)


신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

MFC EDITBOX control

app/C 2010.04.06 19:52
자주 사용하지만 맨날 까먹는 EDITBOX control !!

CEdit *editControl = (CEdit *)GetDlgItem(IDC_EDIT1);
editControl->SetWindowTextW(_T("문자열");
editControl->SetWindowTextW(_T(""));

클래스 위자드나 직접 선언을 해서 EDITBOX의 string 변수를 선언하고~(m_editboxstr)

AfxMessageBox(m_editboxstr);

끝..-_-

 
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret
-_-갑자기 dll파일을 보고 싶었는데...의외로 비주얼스튜디오에선 않열리더라..

급네이년 검색해보니 떡하니 나오네요..ㅎㅎ



java 1.3.1 버전 이상이 설치 되어있어야 합니다~
영어로 되잇지만 프로그램이 간단해서 금방 하실수 있을껍니다~


실행화면~
신고

'app > C' 카테고리의 다른 글

MFC 더블 버퍼링  (0) 2010.04.20
MFC EDITBOX control  (0) 2010.04.06
dll viewer anywherepeviewer  (0) 2010.03.26
MFC 다이얼로그 그림(이미지) 띄우기  (0) 2010.03.23
visual studio 소스 들여쓰기  (0) 2010.02.28
uint8_t, uint32_t , uint16_t  (1) 2010.02.26

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret