String Atomsは DDE (Dynamic Data Exchange) で役立ちます。Integer Atomsの用途は何ですか?
2 に答える
2
整数アトムと文字列アトムの使用は似ていますが、整数アトムには参照カウントがないため、実際にはアトムテーブルに格納されることはなく、代わりにアトム値に直接マップされます。
文字列アトムの例:Windowsクラス名(ただし、整数アトムを使用する場合もあります。HansPassantの回答を参照してください)
整数原子の例:標準のクリップボード形式
于 2013-03-21T12:17:59.273 に答える
2
私が知っている唯一の用途は、組み込みのダイアログ クラス名のアトム番号です。MessageBox などは #32770 を使用します。これは、ウィンドウを見つけるために使用するものです。他にもいくつかありますが、それらの数と使用法をうれしく忘れてしまいました。これは 1980 年代、16 ビット Windows と極端なリソース制限の時代にさかのぼります。
この回答で、このアトム番号を使用するサンプル コードを確認できます。
// 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
于 2013-03-21T12:37:36.463 に答える