powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Свой элемент управление
9 сообщений из 9, страница 1 из 1
Свой элемент управление
    #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
Свой элемент управление
    #39008195
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникЕсть ли возможность в Visual C++ Express Edition на чистом winapi сделать свой элемент управления в классе,Нельзя. На чистом WinAPI нельзя. Потому что чистый WinAPI это чистый Си.

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

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


Ты сможешь только если сам с нуля напишешь этот "Базовый класс".
...
Рейтинг: 0 / 0
Свой элемент управление
    #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
Свой элемент управление
    #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
Свой элемент управление
    #39008269
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,

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

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

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

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

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

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

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


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