Re[3]: Среда для разработки DOS-like программы под Windows
От: Pavel Dvorkin Россия  
Дата: 14.03.24 08:27
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Да ёлы палы, нафига MFC?

CC>Вот WinAPI GDI минимум репро пример который я набросал недавно для репро бага в Crossover (баг оказался в libfreetype а не в wine)

Подсчитай количество понятий, используемых в этом коде , которые неизвестны другу ТС, который знает только С и немного C++.
With best regards
Pavel Dvorkin
Re[4]: Среда для разработки DOS-like программы под Windows
От: CreatorCray  
Дата: 14.03.24 10:20
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Подсчитай количество понятий, используемых в этом коде , которые неизвестны другу ТС, который знает только С и немного C++.


А ты думаешь в каркасе MFC или QT их будет меньше?
Ему надо дать "рыбу", да хоть эту же, остальное он допишет сам.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Среда для разработки DOS-like программы под Windows
От: Pavel Dvorkin Россия  
Дата: 14.03.24 10:29
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>А ты думаешь в каркасе MFC или QT их будет меньше?


Не настолько хорошо знаю QT, чтобы судить.

В MFC каркас сделает wizard. ТС пусть сделает его (он не может с ним сидеть постоянно, но ввести в курс все равно придется). Сделать так, чтобы MFC линковалась статически.

А дальше менять OnPaint. Там будет тот же набор понятий, что и в DOS. Передвинуть курсор, нарисовать прямую, поставить точку и т.д. Только придется писать pDC-> в каждом случае. Что это значит — можно пока что и не знать.

CC>Ему надо дать "рыбу", да хоть эту же, остальное он допишет сам.


Именно. Но рыба на MFC лучше, чем на чистом WinAPI. По крайней мере мне так кажется.

Когда я давал студентам MFC, я на первом занятии набрасывал при них почти этот пример — рисование по следу курсора мыши. А уж потом рассказывал MFC в деталях.
Правда, как писать под Win API студенты уже знали.
Делал так, чтобы показать им "а вот как это намного проще делается с MFC"
With best regards
Pavel Dvorkin
Отредактировано 14.03.2024 10:32 Pavel Dvorkin . Предыдущая версия .
Re[6]: Среда для разработки DOS-like программы под Windows
От: kov_serg Россия  
Дата: 14.03.24 11:16
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

CC>>Ему надо дать "рыбу", да хоть эту же, остальное он допишет сам.


PD>Именно. Но рыба на MFC лучше, чем на чистом WinAPI. По крайней мере мне так кажется.

Чистый WinAPI или MFC это слишком длинно и нудно. Но если сделать нормальный интерфейс то... рыба будет угрь

U++ https://www.ultimatepp.org/examples$ScatterCtrl_Demo$en-us.html
https://github.com/epezent/implot

// SerialPort.h
#pragma once

struct SerialPort {
    static SerialPort *create(const char* name,const char* prm=0);
    virtual void close()=0;
    virtual int invalid()=0;
    virtual int setup(const char* config)=0;
    virtual int set_dtr(bool dtr)=0;
    virtual int set_rts(bool dtr)=0;
    virtual int get_rxqueue()=0;
    virtual int read(void* data,int size)=0;
    virtual int write(void* data,int size)=0;
    virtual ~SerialPort() {}
};

  SerialPort.cpp
// SerialPort.cpp
#include "SerailPort.h"
#include <windows.h>

struct WinSerialPort : SerialPort {
    HANDLE handle;
    int open(const char* name,const char* prm) {
        close();
        handle=CreateFileA(name,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        return handle==INVALID_HANDLE_VALUE ? 1 : 0 ;
    }
    void close() {
        if (invalid()) return;
        CloseHandle(handle); handle=INVALID_HANDLE_VALUE;
    }
    int invalid() { return handle==INVALID_HANDLE_VALUE; }
    int setup(const char* config) {
        if (invalid()) return 1;
        DCB dcb[1]; ZeroMemory(dcb,sizeof(*dcb));
        dcb->DCBlength=sizeof(*dcb);
        // COMx[:][baud=b][parity=p][data=d][stop=s][to={on|off}][xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|off|hs}][rts={on|off|hs|tg}][idsr={on|off}]
        BOOL rv=BuildCommDCBA(config,dcb); if (!rv) return 2;
        rv=SetCommState(handle,dcb); if (!rv) return 3;
        #if 0
            COMMTIMEOUTS timeouts[1]; ZeroMemory(timeouts,sizeof(*timeouts));
            timeouts->ReadIntervalTimeout=100;        /* Maximum time between read chars. */
            timeouts->ReadTotalTimeoutMultiplier=10;  /* Multiplier of characters.        */
            timeouts->ReadTotalTimeoutConstant=100;   /* Constant in milliseconds.        */
            timeouts->WriteTotalTimeoutMultiplier=10; /* Multiplier of characters.        */
            timeouts->WriteTotalTimeoutConstant=100;  /* Constant in milliseconds.        */
            rv=SetCommTimeouts(handle,timeouts); if (!rc) return 4;
        #endif
        return 0;
    }
    int set_dtr(bool value) {
        if (invalid()) return 1;
        BOOL rv=EscapeCommFunction(handle, value ? SETDTR : CLRDTR);
        return rv ? 0 : 2;
    }
    int set_rts(bool value) {
        if (invalid()) return 1;
        BOOL rv=EscapeCommFunction(handle, value ? SETRTS : CLRRTS);
        return rv ? 0 : 2;
    }
    int get_rxqueue() {
        if (invalid()) return 0;
        DWORD Errors=0; COMSTAT stat[1];
        BOOL rv=ClearCommError(handle,&Errors,stat);
        return rv ? stat->cbInQue : 0;
    }
    int read(void* data,int size) {
        if (invalid()) return 0;
        DWORD rd=0;
        BOOL rv=ReadFile(handle,data,size,&rd,0);
        return rd;
    }
    int write(void* data,int size) {
        if (invalid()) return 0;
        DWORD wr=0;
        BOOL rv=WriteFile(handle,data,size,&wr,0);
        return wr;
    }
    WinSerialPort() {
        handle=INVALID_HANDLE_VALUE;
    }
    ~WinSerialPort() {
        close();
    }
};

SerialPort* SerialPort::create(const char* name,const char* prm) {
    WinSerialPort *port=new WinSerialPort();
    int res=port->open(name,prm);
    if (prm) port->setup(prm);
    return port;
}
Re[7]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.03.24 12:02
Оценка:
Здравствуйте, CreatorCray, Вы писали:

M>>если ему сделать "рыбу" для электрона

M>>это будет проще, чем писать на WinAPI

CC>Если ему сделать рыбу на WinAPI то ему останется просто позвать тот же SetPixel


А что будет, если изменятся размеры окна? Скроллить там, то, сё? Ну, либо "рыбы" на WinAPI придётся очень много делать
Маньяк Робокряк колесит по городу
Re[8]: Среда для разработки DOS-like программы под Windows
От: CreatorCray  
Дата: 14.03.24 22:31
Оценка:
Здравствуйте, Marty, Вы писали:

M>А что будет, если изменятся размеры окна?

Его можно сделать неизменяемым, поскольку это по условиям задачи нафиг не надо.

M> Скроллить там, то, сё?

Тоже нет в требованиях
Там ж даже буферизации не требуется.

M> Ну, либо "рыбы" на WinAPI придётся очень много делать

Не много, это всё тоже делается просто.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Среда для разработки DOS-like программы под Windows
От: CreatorCray  
Дата: 14.03.24 22:31
Оценка: :)
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>В MFC каркас сделает wizard. ТС пусть сделает его (он не может с ним сидеть постоянно, но ввести в курс все равно придется). Сделать так, чтобы MFC линковалась статически.

PD>А дальше менять OnPaint.
Ну а тут ты меняешь содержимое case WM_PAINT

PD> Там будет тот же набор понятий, что и в DOS. Передвинуть курсор, нарисовать прямую, поставить точку и т.д.

Та же фигня, только код вокруг не такой странный.

PD>Именно. Но рыба на MFC лучше, чем на чистом WinAPI. По крайней мере мне так кажется.

Как по мне так хуже на порядки своей избыточностью и заморочками на ровном месте.
Для человека, который не в курсах даже про GDI это будет гемор.

PD>Правда, как писать под Win API студенты уже знали.

PD>Делал так, чтобы показать им "а вот как это намного проще делается с MFC"
Для человека после ДОС — WinAPI будет ближе и понятнее.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.03.24 23:10
Оценка: +1 :)
Здравствуйте, CreatorCray, Вы писали:

M>>А что будет, если изменятся размеры окна?

CC>Его можно сделать неизменяемым, поскольку это по условиям задачи нафиг не надо.

Захочется практически сразу


M>> Скроллить там, то, сё?

CC>Тоже нет в требованиях

Захочется практически сразу


CC>Там ж даже буферизации не требуется.


Захочется практически сразу


M>> Ну, либо "рыбы" на WinAPI придётся очень много делать

CC>Не много, это всё тоже делается просто.

Осилит ли ТС даже рыбу нормальной минималки Win32 приложения?
Маньяк Робокряк колесит по городу
Re[10]: Среда для разработки DOS-like программы под Windows
От: CreatorCray  
Дата: 14.03.24 23:49
Оценка:
Здравствуйте, Marty, Вы писали:

M>Захочется практически сразу

Делается элементарно

M>Захочется практически сразу

Тоже элементарно

CC>>Там ж даже буферизации не требуется.

M>Захочется практически сразу
Банальный HBITMAP

M>Осилит ли ТС даже рыбу нормальной минималки Win32 приложения?

Я тут пример уже приводил, там буквально пучок строк
Чтоб ниасилить такое это надо стараться.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 15.03.24 00:27
Оценка:
Здравствуйте, CreatorCray, Вы писали:

M>>Захочется практически сразу

M>>Захочется практически сразу
M>>Захочется практически сразу
CC>>>Там ж даже буферизации не требуется.
CC>Банальный HBITMAP
CC>Делается элементарно

Это если кто-то не одну собаку съел на Win32, и то вопросы возникают


M>>Осилит ли ТС даже рыбу нормальной минималки Win32 приложения?

CC>Я тут пример уже приводил, там буквально пучок строк
CC>Чтоб ниасилить такое это надо стараться.

Ты с высоты опыта говоришь. Win32 сложнее кути, как не крути
Но, допускаю, что писать чистоганом приложухи под линупс гораздо больший гемор
Маньяк Робокряк колесит по городу
Re[12]: Среда для разработки DOS-like программы под Windows
От: CreatorCray  
Дата: 15.03.24 01:16
Оценка:
Здравствуйте, Marty, Вы писали:

M>Это если кто-то не одну собаку съел на Win32, и то вопросы возникают

Было бы что там есть, API максимально простой.

M>Win32 сложнее кути, как не крути

Да не сказал бы.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: Среда для разработки DOS-like программы под Windows
От: rosencrantz США  
Дата: 15.03.24 02:26
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, CreatorCray, Вы писали:


M>>> Ну, либо "рыбы" на WinAPI придётся очень много делать

CC>>Не много, это всё тоже делается просто.

M>Осилит ли ТС даже рыбу нормальной минималки Win32 приложения?


Да там вроде тривиально всё? Сконструировать окно, оконная процедура, цикл обработки сообщений? И дальше MSDN пока не затошнит?
Re[3]: Среда для разработки DOS-like программы под Windows
От: kov_serg Россия  
Дата: 15.03.24 08:42
Оценка:
Здравствуйте, rosencrantz, Вы писали:

R>Это попадает в "изучать современную фигню"

Если человек умеет DOS то arduino не вызовет никаких сложностей.
При желании можно qbasic из виртуалки под досом пускать или turbo pascal с bgi-шками и пробрасывать порты на железку — но это уже для 90+
Re: Среда для разработки DOS-like программы под Windows
От: rudzuk  
Дата: 15.03.24 09:18
Оценка: +1
Здравствуйте, rosencrantz, Вы писали:

r> Можно ли предложить что-то более комфортное и при этом чтоб не совсем экзотика?


Конечно можно: C++Builder. Проще не найти. Есть бесплатная версия.
avalon/3.0.2
Re[2]: Среда для разработки DOS-like программы под Windows
От: pagid_ Россия  
Дата: 17.03.24 09:10
Оценка: +1
Здравствуйте, rudzuk, Вы писали:

R>Конечно можно: C++Builder. Проще не найти. Есть бесплатная версия.


Там множество новых концепций, которые легко понять только зная C++ (на уровне С с классами, но все равно) модель программирования под Винду, иначе очень темная комната получится. Все придется делать на ощупь.
Отредактировано 17.03.2024 9:11 pagid_ . Предыдущая версия .
Re[3]: Среда для разработки DOS-like программы под Windows
От: rudzuk  
Дата: 17.03.24 09:42
Оценка: +2
Здравствуйте, pagid_, Вы писали:

p> R>Конечно можно: C++Builder. Проще не найти. Есть бесплатная версия.


p> Там множество новых концепций, которые легко понять только зная C++ (на уровне С с классами, но все равно) модель программирования под Винду, иначе очень темная комната получится. Все придется делать на ощупь.


На этом (Delphi/C++Builder) можно програмировать без понимания каких-либо концепций вообще. Я это видел много раз.

Canvas->Pixels[x][y] = clRed;

Понимание каких концепций требуется для этого?
avalon/3.0.2
Re[4]: Среда для разработки DOS-like программы под Windows
От: kov_serg Россия  
Дата: 17.03.24 14:33
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>
Canvas->Pixels[x][y] = clRed;


R>Понимание каких концепций требуется для этого?

А для этого?

Электронные проекты на основе ESP8266 и ESP32


...

...

...
Re[5]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.03.24 14:49
Оценка:
Здравствуйте, CreatorCray, Вы писали:

PD>>А COM-порт вроде открываешь файл и читаешь/пишешь

CC>угу

PD>>единственная проблема — это чтоб не в UI-треде это делать.

CC>Пожно в отдельном потоке сделать, и critical section прикрутить для синхронизации

Проще таймауты порта настроить и/или читать с ожиданием, чем возится с критическими секциями
Маньяк Робокряк колесит по городу
Re[4]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.03.24 14:50
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

TM>>MFC — это какашка мамонта. Нет смысла его изучать в нашел время. Qt нисколько не сложнее, просто надо разобраться как он работает.


PD>Именно "разобраться" ТС и не устраивает. В MFC можно не разбираться — на том уровне, что ему требуется.


В кути тоже
Маньяк Робокряк колесит по городу
Re[3]: Среда для разработки DOS-like программы под Windows
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.03.24 14:53
Оценка:
Здравствуйте, pagid_, Вы писали:

R>>Конечно можно: C++Builder. Проще не найти. Есть бесплатная версия.


_>Там множество новых концепций, которые легко понять только зная C++ (на уровне С с классами, но все равно) модель программирования под Винду, иначе очень темная комната получится. Все придется делать на ощупь.


В винапи тоже — все эти HDC, почему в одном случае BeginPaint, в другом — GetDC, очередь сообщений, и тд и тп
Маньяк Робокряк колесит по городу
Отредактировано 17.03.2024 15:29 Marty . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.