2013-03-21 3 views
2

String Atoms은 DDE (동적 데이터 교환)에서 유용합니다. Integer Atoms의 용도는 무엇입니까?정수형 정수 사용

+0

그 시험 문제는 몇 살입니까? 더 이상 DDE를 사용하지 않습니다. –

+0

저는 GlobalAddAtom()을 RegisterHotKey()와 함께 사용합니다. 여기서 Atom 문자열을 사용합니다. 정수 원자는 이전 버전과의 호환성만을위한 것입니까? – p32

+1

@Martin James : 문자열 아톰은 DDE에서만 사용되지 않습니다. – Xearinox

답변

2

내가 아는 유일한 사용법은 내장 된 대화 상자 클래스 이름에 대한 원자 번호입니다. MessageBox 및 기타 # 32770을 사용하십시오. 창문을 찾을 때 사용하는 것입니다. 몇 몇 다른 사람들이 있는데, 나는 그들의 숫자와 사용법을 기쁘게 잊었다. 이것은 1980 년대, 16 비트 Windows 및 익일 자원 제한의 시대로 거슬러 올라갑니다.

this answer에서이 원자 번호를 사용하는 샘플 코드를 볼 수 있습니다.

// Checks if <hWnd> is a dialog 
    StringBuilder sb = new StringBuilder(260); 
    GetClassName(hWnd, sb, sb.Capacity); 
    if (sb.ToString() != "#32770") return true; 

[편집]
추가 된 일부 정수 원자 클래스 :

#ifndef POPUPMENU_CLASS_NAME 
#define POPUPMENU_CLASS_NAME "#32768" /* PopupMenu */ 
#endif 
#ifndef DESKTOP_CLASS_NAME 
#define DESKTOP_CLASS_NAME "#32769" /* Desktop */ 
#endif 
#ifndef DIALOG_CLASS_NAME 
#define DIALOG_CLASS_NAME "#32770" /* Dialog */ 
#endif 
#ifndef WINSWITCH_CLASS_NAME 
#define WINSWITCH_CLASS_NAME "#32771" /* WinSwitch */ 
#endif 
#ifndef ICONTITLE_CLASS_NAME 
#define ICONTITLE_CLASS_NAME "#32772" /* IconTitle */ 
#endif 
+0

MSDN의 "문자열을 각 구조에 복사하는 대신 응용 프로그램에서 문자열을 원자 테이블에 배치 할 수 있습니다 ..."그래서 정수형 Atom은 메모리 블록을 거의 저장하지 않습니다 .w0w – p32

2

정수와 문자열 원자를 사용하는 것은 비슷하지만 정수 원자는 참조 카운트가 없으므로 실제로는 원자 테이블에 저장되지 않지만 직접 원자 값에 매핑됩니다.

문자열 원자의 예 : 윈도우 클래스 이름 (그러나 그들은 또한 한스 옆모습의 답변을 참조 정수 아톰을 사용할 수있다)

정수 원자의 예 : 표준 클립 보드 형식