1. 2009.11.07 Win32 API에 버튼 추가하기
  2. 2009.11.07 [11.03] 프로젝트 스터디
  3. 2009.10.26 [10.25] 프로젝트 진행사항
  4. 2009.10.05 포인터를 왜 쓰는가?
  5. 2009.09.29 strcat 실행시간 측정
  6. 2009.09.19 애자
  7. 2009.09.14 실행 속도 측정하기
  8. 2009.07.22 GO
  9. 2009.07.18 Because I Said So
  10. 2009.07.18 나비효과1

Win32 API에 버튼 추가하기

 

  1. 메인 소스 맨 위쪽의 define 부분에 추가할  버튼 컨트롤 ID추가

     #define IDC_SEND 1003 //버튼컨트롤 ID
    ※위의 버튼 컨트롤은 1002번으로 계속 버튼 컨트롤 숫자를 1씩 추가

  2. WndProc 함수에 버튼을 눌렀을 경우 해당하는 내용 추가

     
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
          int wmId, wmEvent;
          PAINTSTRUCT ps;
          HDC hdc;
          static SHACTIVATEINFO s_sai;

           switch (message) 
           {
                  case IDC_SEND:
                                   bt.PortWrite(L"12345");
                                   break;

     →IDC_SEND 버튼을 눌렀을때 나타는 일은 PortWrite 함수를 호출하는 것. 

  3. 화면에 버튼 그려주기
                  case WM_CREATE:
                                CreateWindow(L"button", L"SendButton",WS_CHILD| WS_VISIBLE|BS_PUSHBUTTON,
                                                     10,160,100,30,hWnd,(HMENU)IDC_SEND,g_hInst,NULL);
                                break;
     위의 switch 문에 이어서 WMCREATE 부분에 CreateWindow함수를 추가하는 것으로 화면에 버튼이 만들어진다.
    이것은 단순히 화면에 버튼만 출력하는 것으로, 이 부분만 수행하였다면  2번째 과정을 안했으므로 버튼을 클릭하여도 아무런 반응이 없을 것이다, 아니면 아에 컴파일이 안되는건가.

    - CreateWindow 함수에서 버튼을 만드는데 쓰이는 파라미터는 빨간색으로 표시해 놨으며,
        그 부분에 대하여 설명을 하자면,  

           
                    L"button" :  버튼을 만든 다
                    L"SendButton" : 버튼 안에 들어갈 문자 
                    10,160,100,30 : 버튼이 생성될 위치와 크기 
                                         x좌표, y좌표,  수평크기, 수직크기
                    IDC_SEND : 버튼 컨트롤 ID

    ※ 버튼의 모양을 바꾸기 위해서는 WS_CHILD| WS_VISIBLE|BS_PUSHBUTTON 이 부분에 해당하는 내용을 변경 하여야 한다.





     

'c/c++ > winapi' 카테고리의 다른 글

[API]OWNERDRAW로 버튼 이미지 바꾸기  (0) 2012.08.01
[API] 슬라이더에서 값 읽어오기  (0) 2012.07.23
[API] 버튼에 이미지 씌우기  (0) 2012.07.23
WM_TIMER  (0) 2009.05.26
ComboBox  (0) 2009.05.26

[11.03] 프로젝트 스터디

프로젝트를 진행함에 있어서,
아무래도 처음 하는 분야이다 보니 잘 하는 선배의 도움을 받았다.
그런 결과 포트도 열리고 쓰는것도 되는데,
읽지를 않는다.
뭐가 문제일까 도대체.

하지만 뭔가 깨닳은건 
반응이 오기 시작한다는것.

그리고 메인 소스에서 버튼을 몇개 추가하여 
프로젝트 진행이 효율적으로 되었다.

추가한 버튼은
1. 수신을 위해 5번 포트를 오픈하고, 내용을 검사하기
2. 보내주기 위해 6번 포트를 오픈하기 
3. 메시지를 보내기만 하기
4  포트 클로즈하기
이 4가지 역할을 하게 함으로써, 한 PDA가 계속 수신과 송신역할만 하는 것이 아니라,
두가지 역할을 동시에 할 수 있게 하였다.

이렇게 함으로써 
PDA(1)의 1번버튼을, PDA(2)의 2번버튼을 누르고,
PDA(2)가 3번 버튼을 누르게 되면
PDA(1)에서 어떠한 메시지를 받았다고 결과를 출력하게 된다.
사실상 여기까지는 딱딱 반응이 오게 되는데,

현재 그 메시지를 읽어 오지를 못하는게 문제다.

아 3주안에 완성시켜오라고 하시는데 ㅜ
가능할지 모르겠다.

- 다음주까지 해야할 내용
   : 참고 하고 있는 소스의 내용으로 현재의 소스의 내용을 바꿔서 테스트 해보기.


'and so on' 카테고리의 다른 글

집에서 일할 때 집중하라  (0) 2011.01.14
슬럼프  (0) 2010.05.18
[10.25] 프로젝트 진행사항  (0) 2009.10.26
포인터를 왜 쓰는가?  (0) 2009.10.05
strcat 실행시간 측정  (0) 2009.09.29

[10.25] 프로젝트 진행사항

이번 프로젝트에서 사용하는  함수들인데,
아직 함수들에 대한 사용을 잘 이해하지 못하여 오늘은 각 함수들이 어떤 역할을 하는지와,
이 함수들을 어떻게 활용할 것인지에 대한 것을 고민하였다.


BOOL bluetooth::PortOpen(CONST WCHAR * szPort) //포트열기


void bluetooth::PortClose() //포트닫기


BOOL bluetooth::PortSet(DWORD dwBaudRate=CBR_115200, DWORD dwTimeOutInSec=5) //포트설정


BOOL bluetooth::PortWrite(CONST WCHAR * wData) //버퍼에 쓰기


BOOL bluetooth::PortRead(WCHAR * wData) //버퍼에서 읽어오기


DWORD WINAPI bluetooth::PortThreadProc(LPVOID lpParameter) //데이터를 읽어들이는 것 지속적인 감시


BOOL bluetooth::PortThreadStart()  //위 함수를 쓰레드로 작동시키기 위한 함수


void bluetooth::PortThreadFinish() //포트로부터 더 이상 데이터를 읽어들이지 않으려는

경우 쓰레드를 종료시킨다.



  • 기존에는 PortSet함수를 사용하지 않았는데, 함수를 사용하면서 입출력을할 버퍼 크기를 정해주기 때문에 사용하여야 할것 같다.
  •  PortRead를 따로 사용해줘야 할 것 같았는데, 그럴필요 없이 PortThreadProc안에서 사용하기 때문에 Main에서 따로 PortRead를 사용해주지 않아도 된다.
  •  Main에서는 PortThreadProc이 아닌, PortThreadStart함수 호출하기.



-위에것을 토대로 Main에 적용한 결과

case IDC_BUTTON:
             if(bt.PortOpen(L"COM1:") == FALSE){
                            MessageBox(NULL,L"PortOpen 실패",L"",NULL);
                            return 0;
              }else{
                            bt.PortWrite(L"하이");
                            MessageBox(NULL,L"PortOpen 성공",L"",NULL);
              }

              if (bt.PortSet(11520,5)==FALSE){
                            bt.PortClose();
                            MessageBox(NULL,L"PortSet실패",L"",NULL);
                            return 0;
              }

              if(bt.PortThreadStart()==FALSE) { 
                            bt.PortClose();
                            MessageBox(NULL,L"PortThreadStart실패",L"",NULL);
                            return 0;
              }
              MessageBox(NULL,L"데이터가 수신되면 메시지 창이 뜹니다\n"L"프로그램을 종료하려면 이 창을 닫아주세
                                  요.",L"STOP",NULL);
              bt.PortClose();
break;


하지만 결과는...
실패 윽
포트조차 열리지 않는다.
왜 그러지..
책에 보면 순서가 저게 맞는데,

-다음에 해야할 일
  •  PortSet함수를 PortOpen에 넣어보기.
  • 송신은 COM6: 으로 수신은 COM5:로 설정해줘서 내가 임의로 넣고 쓰는걸 시켜보기.

'and so on' 카테고리의 다른 글

슬럼프  (0) 2010.05.18
[11.03] 프로젝트 스터디  (0) 2009.11.07
포인터를 왜 쓰는가?  (0) 2009.10.05
strcat 실행시간 측정  (0) 2009.09.29
실행 속도 측정하기  (0) 2009.09.14

포인터를 왜 쓰는가?

 #include <stdio.h>

void assign();


int main()
{

 int cheoli =0;

 assign();

 printf("함수가 호출된 후에 cheoli에 저장된 값 : %d\n", cheoli);

 return 0;

}

void assign()
{

int  cheoli = 100;

}

=>결과값 cheoli = 0

∵ assign 함수 내에서 선언된 cheoli 변수는 main함수와는 전혀 상관없는 새로운 기억공간에 할당된 변수

 

#include <stdio.h>

void assign(int *);


int main()
{

 int cheoli =0;

 assign(&cheoli);

 printf("함수가 호출된 후에 cheoli에 저장된 값 : %d\n", cheoli);

 return 0;

}

 

void assign(int *ip)
{

 *ip = 100;

}

=> 결과값 cheoli = 100

 

return을 사용하면 두개의 변수에 서로 다른 값을 저장하는 함수는 불가능.

그러나 포인터를 사용하면 두 개 이상의 변수를 직접 참조하는 함수를 만들 수 있다.


'and so on' 카테고리의 다른 글

[11.03] 프로젝트 스터디  (0) 2009.11.07
[10.25] 프로젝트 진행사항  (0) 2009.10.26
strcat 실행시간 측정  (0) 2009.09.29
실행 속도 측정하기  (0) 2009.09.14
베풂  (0) 2009.06.02

strcat 실행시간 측정

strcat함수는 문자열에서 널 문자를 찾아가 종결자를 찾아내면, 문자열을 돌아다니며, 한 번에 글자 하나씩을 복사해서 첫째 문자열 뒤여주는 역할을 하기 때문에, strcat의 실행시간이 늦은 이유는 첫 부분이 매번 널 문자를 찾아 목적지 문자열을 헤매 다녀야 하기 때문이라고 생각이 든다.


따라서 문자열의 끝을 가리키는 포인터를 반환하여 문자열을 새로 읽지 않고서도 덧붙이는 장소를 결정할 수 있는 최적화된 mystrcat 함수를 새로 작성하였다.


  • mystrcat 함수

     
  •  strcat 사용



    네모친 부분이 strcat 사용 부분이고, a라는 글자 뒤에 z라는 글자를 3000번 붙여주었다. (시간 측정을 위해서 3000번을 사용하였고, 한 두번 붙여줄 시에는 수행시간이 0.00이 나오게 된다.)

  • 실행시간 비교

    strcat와 mystrcat 두 함수 모두 3000번씩 사용 하였는데, strcat는 수행시간이 14.187이 나왔고 mystrcat는 수행시간이 13.843이 나와 기존에 있는 strcat 함수가 느리다는 결과가 나왔다.

'and so on' 카테고리의 다른 글

[10.25] 프로젝트 진행사항  (0) 2009.10.26
포인터를 왜 쓰는가?  (0) 2009.10.05
실행 속도 측정하기  (0) 2009.09.14
베풂  (0) 2009.06.02
흑백 이미지 부분 컬러 만들기  (0) 2009.05.29

애자

애자
감독 정기훈 (2009 / 한국)
출연 최강희, 김영애, 배수빈, 최일화
상세보기


★★★★★

와 오늘 보고 왔는데,
너무 슬프다
안그래도 요즘 우울해서
한바탕 울고 싶었는데,
이 영화 한편으로 우울이여 당분간 안녕
슬픈 영화란걸 알고 봐도 이렇게 슬플 수 있구나.

'기록' 카테고리의 다른 글

아바타  (0) 2009.12.28
나는 왜 맨날 이 모양 이 꼴로 살까  (1) 2009.11.22
Because I Said So  (0) 2009.07.18
나비효과1  (0) 2009.07.18
트랜스포머2  (0) 2009.07.16

실행 속도 측정하기

자료구조 과제 할때 실행 속도 측정하는 것이 많이 나왔는데.
한동안 실습 시간이 없어 잊고 지내다가 불쑥 나온 과제
실행 속도 비교하기.
오랜 만에 하려니 뭔가 이상하다.






  • 2)수행할 알고리즘
    아래 부분에 시간을 측정하고 싶은 알고리즘을 작성.



 









이번에 strcat에 문제점에 관한 과제를 하게 되었는데,
실행속도에서 내가 만든(?) 함수와 내장함수인 strcat를 비교하는 것이었다.

strcat함수를 한번 사용한다고 실행속도가 나오는 것이 아니여서 
3000번 정도 while문으로 실행하였는데,
처음에 start = clock();이 부분을 while문 안에 넣어버린 것이었다.
함수를 사용할 수록 시간이 늘어나야 하는것은 당연한 것인데,
계속 들쭉날쭉 왜그러지 왜그러지 생각하는데,
아뿔싸 바보..
while문 전에다 놔야지 3000번 실행한 총 시간이 나오는건데,,
계속 함수 한번 실행하는 시간을 해 놓으니까 들쭉날쭉..

으구 ㅋㅋㅋㅋ
담부터는 이런 실수 안하길 .

'and so on' 카테고리의 다른 글

[10.25] 프로젝트 진행사항  (0) 2009.10.26
포인터를 왜 쓰는가?  (0) 2009.10.05
strcat 실행시간 측정  (0) 2009.09.29
베풂  (0) 2009.06.02
흑백 이미지 부분 컬러 만들기  (0) 2009.05.29

GO

GO
카테고리 소설
지은이 KANESHIRO KAZUK (북폴리오, 2006년)
상세보기



이름이란 뭐지? 장미라 부르는 꽃을
다른 이름으로 불러도 아름다운 그 향기는 변함이 없는 것을.
-셰익스피어『로미오와 줄리엣』


맨 처음 첫 장에 쓰여있는 글,
뭐지?
로미오와 줄리엣 처럼 이룰 수 없는 사랑 이야기인가..
맞긴 맞다.
어느정도는?
하지만..
세상에 이룰 수 없는 사랑의 이유가 얼마나 있을까?
성별? 나이?
사쿠라이 스기하라 사이에는 어떤 이유가 그 둘을 가로 막고 있었을까..
둘은 첫 눈에 사랑에 빠졌고, 
서로 너무 잘 통했다.
그런데 사쿠라이가 스기하라를 밀쳐냈다.
왜냐하면 스기하라의 피가 더러워서..
스기하라는 재일한국인이다.
사실 재일조선인인데, 한국으로 국적을 바꿨다.
그런데도, 스기하라는..
차별당하고, 무시당하고.
그래도 스기하라가 견딜 수 있었던건 단지 싸움을 잘했기 때문이라고 생각한다.
싸움을 못했더라면.
견딜 수 없을 정도였을 테니까.
티비에서 비춰지는 재일교포와,
실제 생활을 하는 재일교포는 엄청 다르다는걸 느꼈다.
하긴 이것도 소설이라 믿을만한게 못될지도 모르지만...ㅋ
 

'기록 > ' 카테고리의 다른 글

구해줘  (0) 2010.07.07
모모  (0) 2010.05.24
어느날 내가 죽었습니다  (0) 2009.07.16
너도 떠나보면 나를 알게 될거야  (0) 2009.06.25
포스트잇 라이프  (0) 2009.05.26

Because I Said So

철없는 그녀의 아찔한 연애코치
감독 마이클 레만 (2007 / 미국)
출연 다이앤 키튼, 맨디 무어, 가브리엘 매치, 톰 에버렛 스콧
상세보기


내가 좋아하는 영화 종류
로맨스 코미디?
뭐 예를 들자면. 첫 키스만 50번째.
10일안에 남자친구에게 차이는 법 등등
역시 그런 종류이겠거니 하고
본 영화.


맨 처음부분에는 엄마가 너무 간섭 하는게 아닐까 하는 생각이 들었다.
그런 생각도 당연한게,
우연을 가장한 결혼을 엄마가 만든 것 이니까.
엄마는 딸의 인생을 망치고 싶어서 그런거였지만,
나중에 알게된 딸은. 
엄마에게 화가나 며칠동안 전화도 안받고 말도 하지 않았다.


내 생각인데,
그건 엄마에게 화가난 이유가
제이슨 때문에 조니랑 헤어져서가 아닐까 생각이 든다.
엄마가 자기 결혼에 관섭해서가 아닌 말이다.
그렇게 좋은 남자를 놓칠뻔 했으니 흑흑


하지만 엄마 입장에서 보면,
엄마는 자기 결혼이 실패한 거나 다름 없으니까.
딸의 인생은 그렇게 해주고 싶지 않았던 거이다.
마치 찬유의 승미 엄마처럼?ㅋㅋ


어째뜬
내 관점에서 HAPPY ENDING이니까.
오케이
엄마는 엄마의 사랑을 찾고
딸은 딸의 사랑을 찾고
그럼 된거 아닌가?ㅎㅎㅎㅎ




'기록' 카테고리의 다른 글

나는 왜 맨날 이 모양 이 꼴로 살까  (1) 2009.11.22
애자  (0) 2009.09.19
나비효과1  (0) 2009.07.18
트랜스포머2  (0) 2009.07.16
링스어드벤쳐  (0) 2009.07.16

나비효과1

나비효과
감독 에릭 브레스, J. 마키에 그러버 (2004 / 미국)
출연 애쉬튼 커쳐, 멜로라 월터스, 에이미 스마트, 엘덴 헨슨
상세보기


처음 부분에 보고
무서울꺼 같아서
검색해가면서 본 영화,

무서운건 아니고
가끔가다 흠칫 하게 만든다
중간에 잔인한 장면이 한번 두번?
정도 나오긴 하는데,
무서운거를 전혀 못보는 나도 볼 정도면.
보통 사람들은 그 정도는 아무 것도 아니라고 생각 든다.

보고나서 계속 생각이 났는데,
어느 것이 가장 옳은 선택이었는가..
하는 것과.
내가 그 상황이였다면?
이라는 생각이 계속 머리에 맴맴 맴돌았다.

어디서 많이 본 내용인 것 같아..
라고 계속 생각 했는데,
알고보니
당신, 거기 있어줄래요 라는 책이랑 내용이
얼추 비슷하다.
그 책도 이 영화도 결국 "선택"이라는 것에
초점을 맞춘것 같으니까.

언제 어느것을 어떻게 선택하는가.

나는 매 순간 올바른 선택을 하고 있는가?


- 아 여주인공이 예쁘다 예쁘다 했는데,
어느 영화에서 본 배우인거 같아 검색해 봤더니
JUST FREIND에서 나왔던 여 주인공이구나 :)

'기록' 카테고리의 다른 글

애자  (0) 2009.09.19
Because I Said So  (0) 2009.07.18
트랜스포머2  (0) 2009.07.16
링스어드벤쳐  (0) 2009.07.16
서울대  (0) 2009.07.16