как создать диалог если нет Rc файла?
От: SVV Беларусь  
Дата: 21.11.03 09:05
Оценка:
Привет всем,

Ситуация: Есть набор Cpp и h файлов, которые компилируются с большинством проектов, т.е. там код наиболее часто используемых операций.

Что мне нужно: С недавнего времени нужно чтобы код в Cpp файлах мог созать диалог. Как это сделать? Ведь для создания диалога нужен Rc файл, а не во всех проектах есть файл ресурсов (куда можно включить Rc из какой-либо библиотеки)...

Заранее благодарен.
Re: как создать диалог если нет Rc файла?
От: Блудов Павел Россия  
Дата: 21.11.03 09:13
Оценка: 3 (1)
Здравствуйте, SVV, Вы писали:

SVV>Что мне нужно: С недавнего времени нужно чтобы код в Cpp файлах мог созать диалог. Как это сделать?


Воспользоваться поиском по сайту:
http://www.rsdn.ru/Forum/Message.aspx?mid=24515
Автор: Sashko
Дата: 27.01.02


Павел.
Re: как создать диалог если нет Rc файла?
От: Imp_maverick  
Дата: 21.11.03 09:17
Оценка: 1 (1)
Здравствуйте, SVV, Вы писали:

SVV>Привет всем,


SVV>Ситуация: Есть набор Cpp и h файлов, которые компилируются с большинством проектов, т.е. там код наиболее часто используемых операций.


SVV>Что мне нужно: С недавнего времени нужно чтобы код в Cpp файлах мог созать диалог. Как это сделать? Ведь для создания диалога нужен Rc файл, а не во всех проектах есть файл ресурсов (куда можно включить Rc из какой-либо библиотеки)...


SVV>Заранее благодарен.


Так создавай диалог и элементы диалога программно. Или я не правильно понял вопрос?
Re: как создать диалог если нет Rc файла?
От: vadimus  
Дата: 21.11.03 11:08
Оценка: 3 (1)
Здравствуйте, SVV, Вы писали:

Где-то давно в какой-то конфе видел такой код, включает только <windows.h>
Кто-то считает извратом, кому-то нравится

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define ID_EDIT1    1000
#define ID_EDIT2    1001
#define ID_MESSAGE  1002

struct DIALOG
{
    DLGTEMPLATE dlgTemplate;
    WORD        wMenu;
    WORD        wClass;
    WCHAR       szTitle[9];
    WORD        wFontSize;
    WCHAR       szFontFaceName[7];

    DLGITEMTEMPLATE ctrlEdit1;
    WORD            wClassE1;
    WORD            wClassE1Id;
    WCHAR           szTitleE1;
    WORD            wDataE1;
    WORD            wAlign1;

    DLGITEMTEMPLATE ctrlEdit2;
    WORD            wClassE2;
    WORD            wClassE2Id;
    WCHAR           szTitleE2;
    WORD            wDataE2;
    WORD            wAlign2;

    DLGITEMTEMPLATE ctrlButtonOk;
    WORD            wClassBO;
    WORD            wClassBOId;
    WCHAR           szTitleBO[3];
    WORD            wDataBO;
    WORD            wAlign3;

    DLGITEMTEMPLATE ctrlButtonMdg;
    WORD            wClassBM;
    WORD            wClassBMId;
    WCHAR           szTitleBM[9];
    WORD            wDataBM;
};

DIALOG dialog =
{
    {
        WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_CENTER | DS_SETFONT,
        0,
        4,
        0, 0, 186, 46,
    },
    0x0000,
    0x0000,
    { L'P', L'u', L'r', L'e', L' ', L'A', L'P', L'I', L'\0' },
    8,
    { L'T', L'a', L'h', L'o', L'm', L'a', L'\0' },

    {
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER | WS_TABSTOP | WS_GROUP | ES_AUTOHSCROLL,
        0,
        7, 7, 117, 14, ID_EDIT1,
    },
    0xFFFF,
    0x0081,
    L'\0',
    0,
    0,

    {
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL,
        0,
        7, 24, 117, 14, ID_EDIT2,
    },
    0xFFFF,
    0x0081,
    L'\0',
    0,
    0,

    {
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_TABSTOP | WS_GROUP | BS_DEFPUSHBUTTON,
        0,
        129, 7, 50, 14, IDOK,
    },
    0xFFFF,
    0x0080,
    { L'O', L'K', L'\0' },
    0,
    0,

    {
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_TABSTOP | BS_PUSHBUTTON,
        0,
        129, 24, 50, 14, ID_MESSAGE,
    },
    0xFFFF,
    0x0080,
    { L'&', L'M', L'e', L's', L's', L'a', L'g', L'e', L'\0' },
    0,
};

int CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_COMMAND:
        if (IDOK == LOWORD(wParam) || IDCANCEL == LOWORD(wParam))
        {
            EndDialog(hwndDlg, LOWORD(wParam));
            return TRUE;
        }
        if (ID_MESSAGE == LOWORD(wParam))
        {
            MessageBox(NULL, TEXT("This is simple message box."), TEXT("Message Box"),  MB_OKCANCEL | MB_SERVICE_NOTIFICATION); /*MB_OK | MB_ICONINFORMATION |*/
            return TRUE;
        }
        if (ID_EDIT1 == LOWORD(wParam) && EN_CHANGE == HIWORD(wParam))
        {
            TCHAR szText[1024];
            HWND  hwndEdit1 = GetDlgItem(hwndDlg, ID_EDIT1);
            HWND  hwndEdit2 = GetDlgItem(hwndDlg, ID_EDIT2);

            GetWindowText(hwndEdit1, szText, 1024);
            SetWindowText(hwndEdit2, szText);
        }
    }
    return FALSE;
}

int main()
{
    DialogBoxIndirect(0, &dialog.dlgTemplate, GetDesktopWindow(), DialogProc);
    return 0;
}
Re: Всем спасибо.
От: SVV Беларусь  
Дата: 21.11.03 14:39
Оценка:
Вопрос закрыт. Хочу только сказать что я пользовался поиском, и на эту тему не вышел. Просто нужно учитывать что не все одинаково хорошо пользуются поиском (убедился на примере окружающих и себя), професионализм в программировании (или любой др. области) вовсе не означает профессиональное владение поиском, и наоборот. Это я к тому что это нужно учитывать, правила rsdn я знаю и стараюсь не нарушать.
Re[2]: как создать диалог если нет Rc файла?
От: Блудов Павел Россия  
Дата: 22.11.03 10:57
Оценка:
Здравствуйте, vadimus, Вы писали:

V>Где-то давно в какой-то конфе видел такой код, включает только <windows.h>

V>Кто-то считает извратом, кому-то нравится

Следовало воспользоваться поиском по сайту:
http://www.rsdn.ru/Forum/Message.aspx?mid=24515
Автор: Sashko
Дата: 27.01.02
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.