Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Символьное имя элемента управления


Автор: knave 5.4.2004, 10:17
А можно в программе как нить в программе получить ID элемента управления в виде сткрои. Например если он был IDC_TITLE (дефайн), то что бы в програме я моге его считаь строкуи получить чтото вроде "IDC_TITLE"


Автор: mr.DUDA 5.4.2004, 11:09
а зачем ?

Автор: knave 5.4.2004, 11:40
Хочу перебрать все элементы в далогоаом окне и сохранить в файле в таком виде
<ID>=<значение>
Причем ID должен быть не число а символьное имя
наприер если еть такое
#define IDC_TITLE 1004
#define IDC_DESC 1005

Тогда должно получиться
IDC_TITLE="какойто текст"
IDC_DESC="какойто текст"


Автор: knave 5.4.2004, 12:03
Да вопрос не только в том как это сделать. а можно ли вобще??? Хотя етсь полдозрени что нет.

Автор: Coocky 5.4.2004, 12:07
Вряд ли.Даже если программно.Уж функции такой точно нет.А может напишешь,для чего использовать будешь?Может вопрос можно и по другому решить smile.gif

Автор: srd 5.4.2004, 14:06
Какие могут быть сомнения. Разумеется, этого нельзя сделать. Ты пишешь в своей программе
#define IDR_MAINFRAME 101
И при компиляции этот текст заменяется на константу 101. В коде никаких IDR_MAINFRAME нет!

Автор: mr.DUDA 5.4.2004, 15:05
Возьми содержимое файла MyProgram.rc, там всё уже почти готовое лежит. Осталось только распарсить:
Цитата
...

IDD_ASK_PASSWORD DIALOG DISCARDABLE  0, 0, 197, 55
STYLE DS_SYSMODAL | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION |
    WS_SYSMENU
CAPTION "RecordMyPC access"
FONT 8, "MS Sans Serif"
BEGIN
    EDITTEXT        IDC_PASSWORD,6,16,184,14,ES_PASSWORD | ES_AUTOHSCROLL
    DEFPUSHBUTTON  "OK",IDOK,86,37,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,140,37,50,14
    LTEXT          "Enter password:",IDC_STATIC,6,4,52,8
END

...


Добавлено @ 15:15
З.Ы, можно даже утилку написать, которая будет вызываться по специально написанному макросу VC++ (например, повесить её на клавишу Alt+Ctrl+F10) и парсить текущее содержимое .rc-файла, затем создавать .h/.cpp-файлы (в .h-файле будет объявлен глобальный массив идентификаторов, а заполняться массив будет в .cpp-файле)

Автор: Nastya 5.4.2004, 17:51
Можно изночально ID делать не числовым, а строковым, как это первоначально было в виндузах досихпор поддерживается

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)