| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 10.08.2003
Сообщения: 189
![]() ![]() ![]() ![]() |
Преобразование строки с ID кнопки в int
Можно ли как-нибудь преобразовать строку, которая содержит надпись, например, "ID_CLOSE" или WM_COMMAND (или другой ID кнопки, сообщения и т.д.) к int?
PS Уж извините за такое название темы
|
|
|
|
|
# 3 |
|
::VIP::
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310
![]() ![]() ![]() ![]() ![]() |
за нефиг делать
![]() посмотри на файл resource - там уже даны все номера а если тебе охота определить ID по надписи на кнопке - беги по всем айтемам (от 1 до _APS_NEXT_RESOURCE_VALUE) и спрашивай GetWindowText (у валидных естественно). Найдёш текст - индекс айтема у тебя уже есть |
|
|
|
|
# 5 |
|
Junior Member
Регистрация: 10.08.2003
Сообщения: 189
![]() ![]() ![]() ![]() |
Да мне просто интересно было, можно ли сделать такое:
есть строка, в ней записано "IDM_FA", теперь необходимо эту строку, так сказать, преобразовать в int, чтобы можно было реализовать такое: switch (message) { case WM_COMMAND: int Id= что-то делаем со строкой; switch (Id) { case IDM_FA: ля-ля; break; } |
|
|
|
|
# 6 | |
|
::VIP::
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310
![]() ![]() ![]() ![]() ![]() |
Цитата:
![]() У меня на службе активно используется подобная фишка. Вот реализация: Код:
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;
}
|
|
|
|