2010-12-30 2 views
0

이전에 작성한 구형 MFC 코드가 있는데, "조금 새로 꾸몄다"고했습니다. 창 클래스 'OnChar() 처리기에서 다음 코드가 있습니다.Ctrl + X, Ctrl + C 및 Ctrl + V의 Windows 상수

저는 0x18과 같은 상수를 사용하는 것을 정말로 좋아하지 않습니다. 코드를 좀 더 읽기 쉽게하고 싶습니다. 나는 내 자신을 선언 할 수 있지만,이 값들을위한 Windows 매크로가 없다는 것을 안다. 나는 이것에 대해 웹상에서 아무 것도 찾을 수 없었다.

// Check for clipboard commands 
switch (nChar) 
{ 
    case 0x18: // Ctrl+X - Cut 
     OnEditCut(); 
     break; 
    case 0x03: // Ctrl+C - Copy 
     OnEditCopy(); 
     break; 
    case 0x16: // Ctrl+V - Paste 
     OnEditPaste(); 
     break; 
} 
+1

코드가 실제로 사용되고 단축키가 다른 사람 (가속기 테이블과 같은)에 의해 처리되지 않았습니까? 문자 코드가 'X' 'C'와 'V'이고, 별도의 플래그 인수가 있는지 확인하여 Ctrl 키를 누른 상태인지 확인하기 때문에 나에게 잘못되었습니다. 아마 OnChar가 어떻게 작동하는지 잊어 버렸을 것입니다. –

+0

위의 코드가 설명 된대로 작동한다는 것은 의심의 여지가 없습니다. –

답변

2

nChar에서 오프셋을 뺀 코드가 있습니까?

이러한 값은 알파벳의 문자 위치이지만 문자 코드는 정상적으로 작동한다고 생각하지 않습니다. (내가 이것을 사용 했으므로 오랜 시간이 걸렸으므로 아마 잘못 기억하고있을 것입니다.)

어쨌든 코드 조각은 사실상 ASCII 문자 순서를 사용하는 아키텍처에서 효과적입니다. 즉, 영문자) :

다른 의견에서 언급했듯이 Ctrl 키를 누른 상태에서 다른 코드를 확인해야합니다.

+1

''X '-'@ ''IMO가 훨씬 좋다. – 6502

+0

@ 6502. ASCII 테이블에서 A가 @ 앞에 오는 것을 기억할 가능성이 없기 때문에 내가 더 명확하게 해낸 방법을 찾았지만 취향에 문제가 있습니다. –

+1

@Leo :'#define CTRL (x) ((x) - '@')'는 어떨까요? 이런 식으로 코드는'case CTRL ('X')가됩니다 : ... ' – 6502