#include "main.h"
#include <richedit.h>
#include <stdio.h>
// Bekannte Report-Struktur für Programmschritte
struct ReportP{
BYTE repid; // = 4
BYTE nstep;
struct STEP{
WORD time;
short temp;
BYTE outb,outc;
}steps[10];
};
void onEditInit(HWND hEdit) {
}
void onEditChange(HWND hEdit) {
bool ok=true;
int rows=HIWORD(SendMessage(hEdit,TE_GETCOUNT,0,0))-2; // Kopf- und Fußzeile wegrechnen
for (int j=0; j<rows; j++) {
ReportP::STEP&step=((ReportP*)(regler.report))->steps[j];
for (int i=0; i<3; i++) {
char*p=(char*)SendMessage(hEdit,TE_GETTEXTPTR,MAKELONG(i,j+1),0);
switch (i) {
case 0: ok=s2time(p,step.time,regler.reportk.tp_ms); break;
case 1: ok=s2dec(p,step.temp,regler.reportk.T_mK); break;
case 2: ok=s2bin2(p,step.outb,step.outc); break;
}
if (!ok) return;
}
}
regler.report[0]=4;
regler.report[1]=rows;
regler.setfeature();
}
void onEditRevert(HWND hEdit) {
if (!regler.getfeature(4)) return;
byte lines=regler.report[1];
SendMessage(hEdit,TE_INITHEADERFOOTER,3,LPARAM("Zeit\0s\0Temp.\0°C\0Digital\0"));
TE_METRICS*m=(TE_METRICS*)SendMessage(hEdit,TE_GETMETRICS,0,0);
m->yMin=4; // mindestens 2 Datenzeilen
m->yMax=12; // höchstens 10 Datenzeilen
for (UINT j=0; j<lines; j++) {
SendMessage(hEdit,TE_INSERT,MAKELONG(j+1,1),0);
ReportP::STEP&step=((ReportP*)(regler.report))->steps[j];
for (UINT i=0; i<3; i++) {
char s[32];
switch (i) {
case 0: time2s(s,step.time,regler.reportk.tp_ms); break;
case 1: dec2s(s,step.temp,regler.reportk.T_mK); break;
case 2: bin2s2(s,step.outb,step.outc); break;
}
SendMessage(hEdit,TE_SETTEXT,MAKELONG(i,j+1),(LPARAM)s);
}
}
}
Detected encoding: UTF-8 | 0
|