Programming/C Win32 MFC2009. 6. 15. 17:06

Ctrl-W 를 눌러,
클래스 위저드에서 다이얼로그 Object를 선택
Messages 에서 PreTranslateMessage를 선택하여
Add Function / Edit Code 를 한 뒤 아래의 코드를 넣어준다.


BOOL ClassName::PreTranslateMessage(MSG* pMsg)
{
     // TODO: Add your specialized code here and/or call the base class
     if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
          return TRUE;
          
     return CDialog::PreTranslateMessage(pMsg);
}

[링크 : http://lafirr.tistory.com/20]
Posted by 구차니
Posted by 구차니
Programming/C Win32 MFC2009. 6. 15. 10:21
PreTranslateMessage() 를 추가 후에

if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) return TRUE;

를 사용하면 엔터, ESC로 종료되는것을 막을 수 있다.


만약에 Editbox에서 엔터로 입력을 받아들여야 할 경우에는, 위와 같이 하면 인식을 못하게 되므로

CWnd *w;
w = GetFocus();
if (w->GetDlgCtrlID() == IDC_CTRL_ID) ...

이런식으로 특정 포커스에서 인식하도록 연결해주면 될 듯?


[링크 : http://lafirr.tistory.com/20] PreTranslateMessage
[링크 : http://www.dreamy.pe.kr/zbxe/?mid=codeclip&category=5904&document_srl=5958] PreTranslateMessage
[링크 : http://purelab.org/zbxe/?mid=guruin&page=3&document_srl=250] 서브클래싱
Posted by 구차니
개소리 왈왈/자전거2009. 6. 15. 01:44
싸이클이 갑자기 땡겨서 가격을 조사해볼겸
단골 자전거 수리점에 갔떠니..


23만원 부터 해드릴 수 있어요~



OTL 털썩.
MTB로 평지 평균 20km 정도 밟는데, 사이클 탄다고 해서 40km 밟는 것도 아닌데
23만원 들여서 사야 하나? 아니 그 길이 만만찮은데 가능한가?
이런 저런 고민 끝에 일단 내린 결론


"돈 생기면 그 때 지르자 ㅋㅋ"


 

막상 사진으로 해놓으니 핸들이랑 바퀴 차이 밖에 안나네 -ㅁ-
아무튼.. 뱃살이 많은 나로서는 엎드려 타다 시피하는 사이클이 가능할려나? ㅠ.ㅠ

사람들 마다 이야기는 다르지만,
MTB가 경사이용 최대 50km 평지 20km 라고 하는데 비해
사이클은 경사이용하면 60~70km 평지 30~50km 정도라고 하는데..
일단 타보기 전에는 알 수 없는 노릇이고 ㄱ-


  
  

[출처 : www.congnamul.com]

대충 계산해보면 실질적으로 짧아야 20km 인데 경사구간에다가, 길 건너기가 쉽지않아서 고민이 된다.
그래도 6km 정도라면 ㄱ- 약간의 경사 따위는 극복을 해내야지!!!

문제는 자전거 타면 샤워시설이 없는 회사이니
3달에 10만원 정도 들지도 모르는 헬스장도 끊어야 한다는 문제가!!
Posted by 구차니
6. Proposal
-----------

Use a comment after the {tagaddress} field.  The format would be:

    {tagname}<Tab>{tagfile}<Tab>{tagaddress}[;"<Tab>{tagfield}..]

   {tagname}    Any identifier, not containing white space..
   <Tab>    Exactly one TAB character (although many versions of Vi can handle any amount of white space).
   {tagfile}    The name of the file where {tagname} is defined, relative to the current directory
                   (or location of the tags file?).
   {tagaddress}    Any Ex command.  When executed, it behaves like 'magic' was not set.
                         It may be restricted to a line number or a search pattern (Posix).

Optionally:
   ;"        semicolon + doublequote: Ends the tagaddress in way that looks like the start of a comment to Vi.
   {tagfield}    See below.

A tagfield has a name, a colon, and a value: "name:value".
- The name consist only out of alphabetical characters.  Upper and lower case are allowed.
   Lower case is recommended.  Case matters ("kind:" and "Kind: are different tagfields).
- The value may be empty.
  It cannot contain a <Tab>.
  When a value contains a "\t", this stands for a <Tab>.
  When a value contains a "\r", this stands for a <CR>.
  When a value contains a "\n", this stands for a <NL>.
  When a value contains a "\\", this stands for a single '\' character.
  Other use of the backslash character is reserved for future expansion.
  Warning: When a tagfield value holds an MS-DOS file name, the backslashes must be doubled!

Proposed tagfield names:

FIELD-NAME    DESCRIPTION

arity        Number of arguments for a function tag.
class        Name of the class for which this tag is a member or method.
enum        Name of the enumeration in which this tag is an enumerator.
file        Static (local) tag, with a scope of the specified file.  When the value is empty, {tagfile} is used.
function    Function in which this tag is defined.  Useful for local variables (and functions).
               When functions nest (e.g., in Pascal), the function names are concatenated, separated with
                '/', so it looks like a path.
kind        Kind of tag.  The value depends on the language.  For C and
        C++ these kinds are recommended:
        c    class name
        d    define (from #define XXX)
        e    enumerator
        f    function or method name
        F    File name
        g    enumeration name
        m    member (of structure or class data)
        p    function prototype
        s    structure name
        t    typedef
        u    union name
        v    variable
        When this field is omitted, the kind of tag is undefined.
struct        Name of the struct in which this tag is a member.
union        Name of the union in which this tag is a member.

Note that these are mostly for C and C++.  When tags programs are written for
other languages, this list should be extended to include the used field names.
This will help users to be independent of the tags program used.

Examples:

    asdf    sub.cc    /^asdf()$/;"    new_field:some\svalue    file:
    foo_t    sub.h    /^typedef foo_t$/;"    kind:t
    func3    sub.p    /^func3()$/;"    function:/func1/func2    file:
    getflag    sub.c    /^getflag(arg)$/;"    kind:f    file:
    inc    sub.cc    /^inc()$/;"    file: class:PipeBuf


The name of the "kind:" field can be omitted.  This is to reduce the size of
the tags file by about 15%.  A program reading the tags file can recognize the
"kind:" field by the missing ':'.  Examples:

    foo_t    sub.h    /^typedef foo_t$/;"    t
    getflag    sub.c    /^getflag(arg)$/;"    f    file:


Additional remarks:
- When a tagfield appears twice in a tag line, only the last one is used.

Note about line separators:

Vi traditionally runs on Unix systems, where the line separator is a single
linefeed character <NL>.  On MS-DOS and compatible systems <CR><NL> is the
standard line separator.  To increase portability, this line separator is also
supported.

On the Macintosh a single <CR> is used for line separator.  Supporting this on
Unix systems causes problems, because most fgets() implementation don't see
the <CR> as a line separator.  Therefore the support for a <CR> as line
separator is limited to the Macintosh.

Summary:
line separator    generated on        accepted on
<LF>        Unix            Unix, MS-DOS, Macintosh
<CR>        Macintosh        Macintosh
<CR><LF>    MS-DOS            Unix, MS-DOS, Macintosh

The characters <CR> and <LF> cannot be used inside a tag line.  This is not
mentioned elsewhere (because it's obvious).

Note about white space:

Vi allowed any white space to separate the tagname from the tagfile, and the
filename from the tagaddress.  This would need to be allowed for backwards
compatibility.  However, all known programs that generate tags use a single
<Tab> to separate fields.

There is a problem for using file names with embedded white space in the
tagfile field.  To work around this, the same special characters could be used
as in the new fields, for example "\s".  But, unfortunately, in MS-DOS the
backslash character is used to separate file names.  The file name
"c:\vim\sap" contains "\s", but this is not a <Space>.  The number of
backslashes could be doubled, but that will add a lot of characters, and make
parsing the tags file slower and clumsy.

To avoid these problems, we will only allow a <Tab> to separate fields, and
not support a file name or tagname that contains a <Tab> character.  This
means that we are not 100% Vi compatible.  However, there is no known tags
program that uses something else than a <Tab> to separate the fields.  Only
when a user typed the tags file himself, or made his own program to generate a
tags file, we could run into problems.  To solve this, the tags file should be
filtered, to replace the arbitrary white space with a single <Tab>.  This Vi
command can be used:

    :%s/^\([^ ^I]*\)[ ^I]*\([^ ^I]*\)[ ^I]*/\1^I\2^I/

(replace ^I with a real <Tab>).

TAG FILE INFORMATION:

Psuedo-tag lines can be used to encode information into the tag file regarding
details about its content (e.g. have the tags been sorted?, are the optional
tagfields present?), and regarding the program used to generate the tag file.
This information can be used both to optimize use of the tag file (e.g.
enable/disable binary searching) and provide general information (what version
of the generator was used).

The names of the tags used in these lines may be suitably chosen to ensure
that when sorted, they will always be located near the first lines of the tag
file.  The use of "!_TAG_" is recommended.  Note that a rare tag like "!"
can sort to before these lines.  The program reading the tags file should be
smart enough to skip over these tags.

The lines described below have been chosen to convey a select set of
information.

Tag lines providing information about the content of the tag file:

!_TAG_FILE_FORMAT    {version-number}    /optional comment/
!_TAG_FILE_SORTED    {0|1}            /0=unsorted, 1=sorted/

The {version-number} used in the tag file format line reserves the value of
"1" for tag files complying with the original UNIX vi/ctags format, and
reserves the value "2" for tag files complying with this proposal. This value
may be used to determine if the extended features described in this proposal
are present.

Tag lines providing information about the program used to generate the tag
file, and provided solely for documentation purposes:

!_TAG_PROGRAM_AUTHOR    {author-name}    /{email-address}/
!_TAG_PROGRAM_NAME    {program-name}    /optional comment/
!_TAG_PROGRAM_URL    {URL}    /optional comment/
!_TAG_PROGRAM_VERSION    {version-id}    /optional comment/

[링크 : http://ctags.sourceforge.net/FORMAT]



별다른 옵션을 주지 않고
 ctags [filename]
으로 실행하면 tags 라는 파일이 생성됨

$more test.c
#include <stdio.h>
#define VERSION 1.00

typedef struct _point_
{
    int x;
    int y;
} POINT;

void main()
{
    int a;
    char str[] = "Hello world";
    POINT pt;
   
    printf("%s\n",str);
}

$ more tags
!_TAG_FILE_FORMAT    2    /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED    1    /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert    /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME    Exuberant Ctags    //
!_TAG_PROGRAM_URL    http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION    5.4    //
POINT    test.c    /^} POINT;$/;"    t    file:
VERSION    test.c    2;"    d    file:
_point_    test.c    /^typedef struct _point_$/;"    s    file:
main    test.c    /^void main()$/;"    f
x    test.c    /^    int x;$/;"    m    struct:_point_    file:
y    test.c    /^   
int y;$/;"    m    struct:_point_    file:

{tagname}<Tab>{tagfile}<Tab>{tagaddress}[;"<Tab>{tagfield}..] 가 기본 포맷인데
POINT    test.c    /^} POINT;$/;"    t    file: 를 보면

tagname - POINT
tagfile - test.c
tagaddress - /^} POINT;$/
tagfield - t
tagfield - file:

라는 의미를 지니게 된다. 아래의 POINT 구조체의 x, y 변수는 m(member)로 표기된다.

'프로그램 사용 > ctags & cscope' 카테고리의 다른 글

ctags 제약사항  (0) 2011.10.28
kscope 에서 특정 확장자 추가하기  (0) 2009.11.04
kscope 프로젝트 생성하기  (0) 2009.08.20
ctags  (0) 2009.01.07
Posted by 구차니
하드웨어2009. 6. 14. 00:42
이번에 디바이스 마트에 이벤트로 풀린건지 모르겠지만 8500원/1개 (VAT 별도로) 올라왔다.

48Pin LCC / 400Kbps I2C / 렌즈 별도(요게 압박)

[링크 : http://www.devicemart.co.kr/mart7/mall.php?cat=001007004&query=view&no=9589#]
Posted by 구차니
누구를 위한 검찰인지 모르겠다.

참고인이 누구누구인지도 알 수 없이 봉인해서 역사의 뒤안길로 숨기는 것이
수사기록으로 남겨 보존하겠다는 걸까?

검찰역시, 이러한 행동이 많은 사람들의 의문을 생기게 하는 것을 알고 있음에도
이러한 바보짓을 할 수 밖에 없는건 어떠한 꼬리를 잡혔기 때문일까?

아니면, 이러한 것에 의문을 가지지 않을 정도로 국민들이 바보라고 생각하는 걸까?


[링크 : http://www.ithedaily.com/news/articleView.html?idxno=38596]
Posted by 구차니
아고라 돌아 다니면서 글들을 보고 리플을 보니 웃음을 멈추지 못하겠다.
물론 그 웃음이 행복해서 터져나오는 웃음은 아니다.

글을 읽기 전에 글쓴놈에 대해서 알 필요가 있을까 싶긴 하지만
글 쓴놈에 대해서 약간의 소개를 해야겠다.

 글쓴놈 구차니의 가족은 전부 서울/경기 태생이며, 구차니만 포항에서 태어나 고등학교를 졸업했다.
 그리고 가족의 고향으로 강제 이주 당해서 현재 서울에서 거주중이다.


1. 삼성이 망하면 나라가 망한다. 그러니까 불매운동 하지 말라고?

 가장 이해가 안되는 글들이고 내용들이다. 물론 삼성이 상당히 많은 노동자를 보유하고 있고, 하청구조로 상당히 많은 사람들의 밥줄을 책임지고 있긴하다. 하지만, 삼성의 경제 지배 구조를 봤을 때(물론 보려고 하는 사람도 얼마 되지 않겠지만) 과연 제대로 된 경제 구조인가 라는 생각이 들지 않는다.
 어짜피 (기준삼아 이야기 하자면) 대학 졸업자의 초임이 그렇게 차이 나야 할 이유는 없다. 대기업은 3200 중소기업은 1800 이라고 정형화 되다 시피한 이 월급 체제가 옳다고 생각하는가? 두개를 평균내면 2500만원, 중소기업에서 일하는 사람은 700만원을 못 받는 것이고, 대기업에서 일하는 사람은 700을 더 받는 것이다. 다르게 말하면 회사에 따라서 인생의 출발선에 따라서 월급이 결정되고, 실질적인 결과물에 비해서 대기업 직원들이 더 많이 받는 것이다.

 "너도 억울하면 열심히 해서 대기업 들어 가지 왜 못들어 가서는 찌질대냐?"
 아마도 대기업에 들어가지 못한 나로서는 이런 소리 들어도 딱히 반박할 소리는 없다. 그래도 찌질하게 답변을 해봐야 겠다.

 "아 예~ 대기업 들어가서 열심히 돈 받고 개로 사세요"
 SSAT에서 많이 논란이 되었던 부분은, 삼성에 적합한 인재를 뽑는다는 것이다.
 다르게 말하자면, 반항하지 않고 적당히 똑똑하며 잘 부려먹을 수 있는 인재이다. 물론 기업은 이윤을 추구하므로, 이러한 행동이 잘못되었다고 할수는 없지만, 수탈 과정과 구조에서 봤을때, 이러한 인재를 뽑는 이유는 아주 당연하고 뻔하다.
 "나에게 칼을 들이댈 사람은 사전에 뿌리를 쳐낸다."
 당연하다면 당연한 이야기지만, 조직에 있어서 점점 죽어가는 조직이 될 수 밖에 없는 방식이다. 고름은 짜주어야 하는데 그냥 곪는것을 지켜만 보고 너 역시 높은 자리에 오면 곪아 썩어 문들어져야 한다는 식으로 밖에 보이지 않는다.


2. 경상도가 있어서 명박이가 되었고 한나라당이 득세한다.

 항상 비판의 이야기는 하나다. 경상도는 한나라당만 좋아하고 노친네들이 많은데다 단결력이 좋아서 자기 지역에서 나오면 몰표해주기에 이길수가 없다. 경상도가 득세해서 전라도가 죽는다.
 그런데 반대로 생각해보자면 경상도가 인원이 많다 한들, 서울/경기 지역보다 많을까?
 그리고 그정도의 단결력이라면 다른 지역도 충분히 단결해서 무찌를수 있지 않을까?

 내가 경상도라고 해서 무조건적으로 경상도를 보호할 생각은 없다.

 단지, 생각없는 노친네들의 교육으로 인해 생각없이 아이들이 자라났다는건 경상도 뿐만이 아니라 대한민국 전국 어떠한 시도역시 마찬가지라는 것이다. 얼마전 올라온 서울대생의 20대 이야기는 그 서울대생이 경상도 출신이서 였을까? 아니다. 지금의 어떠한 20대라도 전부 그런 생각을 하고 있을 것이고, 유독 이런쪽으로 단합이 잘되어 한나라당을 뽑아주는 경상도가 가시적으로 들어날 뿐이다.
 하지만, 정말 경상도가 그렇게 다들 머리가 없어서 한나라당을 전폭 지지하는 걸까?

 명제를 곰곰히 생각해보자. 경상도 - 전라도라는 구도가 언제부터 공식화 되었는지 알수는 없지만 확시한건 언론에서 떠벌려 준다는 것이다. 선거철만 되면 경상도 - 전라도 빨갱이 이야기는 지겹도록 들리고 이를 조장함으로 얻을수 있는 이득은 국민이 아닌 정치권이다. 표를 분열시켜 경상도는 더더욱 경상도를 뽑게 만들고, 전라도는 내부분열을 통해서 자기들 끼리 싸우게 한다. 그럼 지역색을 말하는 이유역시 뻔하다. 한나라당이 자기들이 뽑힐 가능성을 높히기 위해 선거철만 되면 빨갱이 이야기를 꺼내면서 경상도를 들먹이고 경상도 역시 이용당하고, 이용당하지 않겠다고 소리치는 전라도 역시 역설적으로 이용을 당할 뿐이다.

 


결론이 없고, 두서없이 적게 되었지만

불매운동 벌인다고 검찰에서 조사해서 잡아 들인다고 협박을 하지 않나.
이제는 인터넷이 글 쓰는데도 괜히 그 사람의 안부를 걱정해야 하지 않나.
너무 오래 살았나 싶기도 하면서, 민중은 계속 어리석은 채로 있어야 하는건가 라는 의구심이 든다.

괜히 빨갱이, 좌빨, 우발 소리에 선동당하지 말고
옆에서 피가 흐르더라도 조금은 머리를 식히고 차분히 생각을 해야 할때다.

진정한 적은 다른 도의 사람, 엄친아가 아니다. 이를 조장하는 숨어 있는 기득권들이다.
타인에게 엉뚱하게 뿌려질 분노의 꼬리를 쥐어잡고, 진정으로 분노를 뿜어야 할 숨어 있는 자들을 찾아야 한다.
Posted by 구차니
개소리 왈왈2009. 6. 13. 00:33
EBS 인간의 두 얼굴 - 상황의 힘을 보고 나서 잠시 인터넷을 보게 되었다.

군중을 움직이는데에는 3사람만 있으면 될 뿐이고
한사람이 군중을 움직이기 위해서는, 두 사람의 동조자를 만들면된다.
(물론 위의 프로그램에는 나오지 않았지만, 지명을 해서 해달라고 요청하면 해줄 가능성이 높아진다.)

인터넷에는 리플이 있다.
처음다는 사람의 리플에 따라 달리는 리플들이 많이 달라진다고 하는데
기폭제는 첫 리플단 사람(인 놀이라던가, 등수 놀이 제외)
그리고 그 다음 사람부터는 자의던 타의던 동조자
그렇게 군중은 휩쓸리고, 누군가를 살리기도 죽이기도 한다.



군중지성.
위키피디아, 아고라로 대변되는 군중지성은 과연 존재하는 걸까?
일반적으로 옳긴하지만, 다수결이 항상 옳은것도 아니지만 이러한 군중의 힘으로 인해
고려해볼 가치가 있는 의견마저도 반대파로 숙청을 당해버리는 이 시점에서,
우리는 어떠한 태도를 취해야 할까...
Posted by 구차니
LS1004-I100 이라는 모델의 PS/2 타입 바코드 핸드 스캐너를 사용할 일이 생겨서 데이터 시트를 찾는데..
영 안나온다.. OTL(요즘 따라 왜케 안나오는 일만 하는거지 .. OTL)

일단 데이터 포맷을 알아야 하기에 찾아봐도 안나오고
그냥 무책임하게 키보드 처럼 읽으면 되요~ 라고 하는 센스 ㄱ-

아무튼! 메모장과 frhed를 동원해서 캡쳐를 해보니

시리얼 넘버+ 엔터 + 엔터 이런식으로 날아 온다.
0x0D 0x0A 가 CR/LF 로 엔터 부분이고(DOS 타입인가..)


CR/LF 가 두번 있으니, 메모장 상에서는 엔터 두번 친것 처럼 한번 띄워진다.
(엔터 한번에 다음줄, 또 한번에 다음줄 이니 실질적으로 한줄의 공백이 생긴다.)


문제는, 일부 프로그램에서 Ctrl-A, Ctrl-M 단축키가 지정되어 있을 경우
전부 선택후 엔터, 전부 선택후 엔터로 인식을 하므로 아무런 문장도 입력되지 않을 수 있다.
(네이트온의 경우 Ctrl-M으로 인해 미니대화/일반대화 오가면서 데이터 소실)

0.01mg 정도의 도움을 준 문서
[PDF] Built-in Laser Barcode Scanner PROGRAMMING MANUAL
Klaser Series에 대한 메뉴얼이다. 바코드만 잔뜩 -ㅁ-! (아마 설정 바꾸는데 사용하는 것 같다.)

1088kb...pdf LS1004 User-Programmer Manual
[링크 : http://www.iepos.com/support/symbol-manuals.htm]


Posted by 구차니