IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Преобразование строки с ID кнопки в int (https://www.imho.ws/showthread.php?t=73018)

Merlyel 08.11.2004 08:14

Преобразование строки с ID кнопки в int
 
Можно ли как-нибудь преобразовать строку, которая содержит надпись, например, "ID_CLOSE" или WM_COMMAND (или другой ID кнопки, сообщения и т.д.) к int?
PS Уж извините за такое название темы :)

/7y3uK 09.11.2004 01:34

Jinx
Что-то как-то не понятно... это на чем пишется и для каких целей нужно это действие?? - по развернутей напиши...

SapeR 09.11.2004 14:29

за нефиг делать :)
посмотри на файл resource - там уже даны все номера
а если тебе охота определить ID по надписи на кнопке - беги по всем айтемам (от 1 до _APS_NEXT_RESOURCE_VALUE) и спрашивай GetWindowText (у валидных естественно). Найдёш текст - индекс айтема у тебя уже есть

mike00340 10.11.2004 18:42

Это так называются #define
т.е.
#define WM_COMMAND 100
потом в тексте пишешь
int zzz=WM_COMMAND;
и все работает на ура!

Merlyel 13.11.2004 03:53

Да мне просто интересно было, можно ли сделать такое:
есть строка, в ней записано "IDM_FA", теперь необходимо эту строку, так сказать, преобразовать в int, чтобы можно было реализовать такое:
switch (message)
{
case WM_COMMAND:
int Id= что-то делаем со строкой;
switch (Id)
{
case IDM_FA: ля-ля; break;
}

SapeR 17.11.2004 00:25

Цитата:

строку, так сказать, преобразовать в int
Jinx, а это за тебя автоматом никто делать не будет :)
У меня на службе активно используется подобная фишка. Вот реализация:
Код:

enum enMsgID
{
    MSID_QUERY,
    MSID_ACTION,
    MSID_PAUSE,
    MSID_SHUTDOWN,
};

struct MsgType
{
    enMsgID MsgID;
    LPCTSTR MsgText;
};

MsgType IncommingMsg[] = {
    {MSID_QUERY, "Query"},
    {MSID_ACTION, "Action"},
    {MSID_PAUSE, "Pause"},
    {MSID_SHUTDOWN, "Shutdown"},
};

static int nNumOfMessages = sizeof(IncommingMsg) / sizeof(MsgType);

int GetMsgID(CString sMsgText)
{
    for (int i=0; i<nNumOfMessages; i++)
    {
        if (sMsgText == IncommingMsg[i].MsgText)
            return IncommingMsg[i].MsgID;
    }
    return -1;
}

и по ходу дела вызываю GetMsgID

Merlyel 21.11.2004 03:14

Вот именно мне и было интересно, есть ли встроенный вариант такого действа :)
З.Ы. Твой вариант если что будем иметь в виду :)


Часовой пояс GMT +4, время: 19:13.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.