Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Свой элемент управление / 9 сообщений из 9, страница 1 из 1
15.07.2015, 18:32
    #39008188
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
Хочу чтоб как в QT.
Есть ли возможность в Visual C++ Express Edition на чистом winapi сделать свой элемент управления в классе, допустим Текстовое поле со словами Hello World. Чтобы его можно было подключить инициализировать(позицию), а все операции по созданию компонента выполнились в самом классе автоматически?
например
Код: plaintext
1.
2.
3.
4.
5.
6.
class MyView:public Базовый класс
{
...
MyView(родитель и позиции);
~MyView();
}


в основной программе

Код: plaintext
1.
2.
MyView *view;
view=new MyView(тут указать родителя и позиции);



вот какой базовый класс нужно установить и что необходимо прописать в конструкторе чтоб он сразу отобразился?
...
Рейтинг: 0 / 0
15.07.2015, 18:42
    #39008195
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
КартежникЕсть ли возможность в Visual C++ Express Edition на чистом winapi сделать свой элемент управления в классе,Нельзя. На чистом WinAPI нельзя. Потому что чистый WinAPI это чистый Си.

Можно сделать С++ враппер вокруг WinAPI. Смотри исходники того-же Qt, и/или MFC, и/или любой другой GUI библиотеки.

Написать
Код: plaintext
1.
class MyView:public Базовый класс


Ты сможешь только если сам с нуля напишешь этот "Базовый класс".
...
Рейтинг: 0 / 0
15.07.2015, 19:16
    #39008220
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
Есть ли возможность в Visual C++ Express Edition на чистом winapi сделать свой элемент управления в классе,

Да, возможно. Это на голом С возможно сделать даже.

допустим Текстовое поле со словами Hello World. Чтобы его можно было подключить инициализировать(позицию), а все операции по созданию компонента выполнились в самом классе автоматически?

Да, возможно.

например
Код: plaintext
1.
2.
3.
4.
5.
6.
class MyView:public Базовый класс
{
...
MyView(родитель и позиции);
~MyView();
}


в основной программе


Но не на С++. Т.е. можно и на С++, но нужно будет писать всё самому.
В Visual C++ Express Edition нет никаких фреймворков типа MFC, чтобы делать приложения.
Можно только использовать какие-то бесплатные фреймворки типа WXWidgets или TK или тот же QT, или ещё что-то .
...
Рейтинг: 0 / 0
15.07.2015, 19:22
    #39008222
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
MasterZiv,

а как насчет этого?
это подойдет или нет?
взято с http://www.softcraft.ru/coding/winapi/controls.shtml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class SimpleControl
{
public:
	SimpleControl (HWND hwndParent, int id)
        : _hWnd (GetDlgItem (hwndParent, id))
    {}

    void SetFocus ()
    {
        ::SetFocus (_hWnd);
    }

    HWND Hwnd () const { return _hWnd; }

protected:
    HWND _hWnd;
};



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
class Edit: public SimpleControl
{
public:
    Edit (HWND hwndParent, int id)
        : SimpleControl (hwndParent, id)
    {}

    void SetString (char* buf)
    {
        SendMessage (Hwnd (), WM_SETTEXT, 0, (LPARAM) buf);
    }

    // code is the HIWORD (wParam)
    static BOOL IsChanged (int code)
    {
        return code == EN_CHANGE;
    }

    int GetLen ()
    {
        return SendMessage (Hwnd (), WM_GETTEXTLENGTH, 0, 0);
    }

    void GetString (char* buf, int len)
    {
        SendMessage (Hwnd (), WM_GETTEXT,
                      (WPARAM) len, (LPARAM) buf);
    }

    void Select ()
    {
        SendMessage (Hwnd (), EM_SETSEL, 0, -1);
    }
};



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
class Controller
{
public:
    Controller(HWND hwnd);
    ...
private:
    Edit    _edit;
    char    _string [maxLen];
};

Controller::Controller (HWND hwnd)
    : _edit (hwnd, IDC_EDIT)
{
    _edit.SetFocus ();
    ...
}

void Controller::Command (HWND hwnd, WPARAM wParam, LPARAM lParam)
{
    switch (LOWORD(wParam))
    {
        case IDC_EDIT:
            if (_edit.IsChanged(HIWORD (wParam)))
            {
                _edit.GetString (_string, maxLen);
            }
            break;
        ...
    }
}
...
Рейтинг: 0 / 0
15.07.2015, 21:01
    #39008269
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
Картежник,

Это какой-то неизвестный велосипед...
Кому-то может быть и подойдёт.
Я не очень понимаю, что ты хочешь услышать по поводу этих классов.
Хочешь написать свой мини-MFC? Пиши.
Не хочешь ? Используй готовый.
Этот похож на какие-то детские учебные примеры.
...
Рейтинг: 0 / 0
15.07.2015, 21:14
    #39008287
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
MasterZiv,
да хочу свой мини мфс, ну я понял что для меня это очень сложно, даже в этом примере особо не понял что да как, поэтому решил пока остаться на QT.
...
Рейтинг: 0 / 0
15.07.2015, 21:16
    #39008289
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
Картежник,

не, там ничего сложного нет, просто чтобы всё сделать профессионально, надо попариться лет 5 ...
...
Рейтинг: 0 / 0
20.07.2015, 20:12
    #39011706
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
Картежник,

MasterZiv прав, париться нужно основательно, а вот сделать что-то лучше чем существующее очень сложно

в LCL (Lazarus), например, вообще общий "шаблончик" вкатали для большинства либ
...
Рейтинг: 0 / 0
21.07.2015, 10:19
    #39011928
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свой элемент управление
kealon(Ruslan)Картежник,

MasterZiv прав, париться нужно основательно, а вот сделать что-то лучше чем существующее очень сложно

в LCL (Lazarus), например, вообще общий "шаблончик" вкатали для большинства либ

Не, в учебных целях можно и сделать.
В принципе, это очень полезно.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Свой элемент управление / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]