Hi Florian
I am using STM32CubeMX. Maybe the axes can be changed there? For now, the proposal with adding the LCDConf.c file reports errors.
Best regards
Hi Florian
I am using STM32CubeMX. Maybe the axes can be changed there? For now, the proposal with adding the LCDConf.c file reports errors.
Best regards
In which file should I put it?
OK. But I had to set pixel x 2 to get what I wanted: GUI_RECT Rect1 = {0, 0, 640, 120};
I have one more problem. I want to rotate 90 degrees SPINBOX. Can it be done by skinning?
What does this mean + 40?
Hi
I want to put NUMBER on position x = 250, y = 40. I have the following code. Why can't I do that? How to declare GUI_RECT?
static void _cbCallback(WM_MESSAGE * pMsg) {
WM_HWIN hWin;
WM_HWIN hItem;
int NCode;
int Id;
GUI_RECT Rect = {10, 10, 40, 80};
hItem = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
WINDOW_SetBkColor(hItem, GUI_BLUE);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "START");
BUTTON_SetSkin(hItem, _ButtonSkin);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "STOP");
BUTTON_SetSkin(hItem, _ButtonSkin);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "UP");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
BUTTON_SetSkin(hItem, _ButtonSkin);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "DOWN");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
BUTTON_SetSkin(hItem, _ButtonSkin);
break;
case WM_PAINT:
GUI_DispStringInRectEx("NUMBER", &Rect,
GUI_TA_HCENTER | GUI_TA_VCENTER, 10, GUI_ROTATE_CCW);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* CreateWindow
*/
WM_HWIN CreateWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
_cbCallback, WM_HBKWIN, 0, 0);
return hWin;
}
void MainTask(void) {
GUI_Init();
WM_MULTIBUF_Enable(1);
CreateWindow();
while (1) {
GUI_Delay(100);
}
}
Thanks for the clarification. All the time I mean WIDGET with vertical descriptions.
Can you convert WIDGET EDIT and SPINBOX in a similar way?
I want to rotate the inscription on the button. What's wrong here?
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01) // START
#define ID_BUTTON_1 (GUI_ID_USER + 0x02) // STOP
#define ID_BUTTON_2 (GUI_ID_USER + 0x03) // UP
#define ID_BUTTON_3 (GUI_ID_USER + 0x04) // DOWN
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { {
WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 480, 272,
WM_CF_SHOW, 0 }, { BUTTON_CreateIndirect, "START",
ID_BUTTON_0, 30, 20, 40, 232 }, { BUTTON_CreateIndirect, "STOP",
ID_BUTTON_1, 90, 20, 40, 232 }, { BUTTON_CreateIndirect, "UP",
ID_BUTTON_2, 150, 20, 40, 232 }, { BUTTON_CreateIndirect, "DOWN",
ID_BUTTON_3, 210, 20, 40, 232 } };
static void _cbCallback(WM_MESSAGE * pMsg) {
WM_HWIN hWin;
WM_HWIN hItem;
int NCode;
int Id;
hItem = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
WINDOW_SetBkColor(hItem, GUI_BLUE);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "START");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
GUI_DispStringInRectEx("START", hItem, GUI_TA_HCENTER | GUI_TA_VCENTER,
6, GUI_ROTATE_CCW);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "STOP");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "UP");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "DOWN");
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
WM_HWIN CreateWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
_cbCallback, WM_HBKWIN, 0, 0);
return hWin;
}
void MainTask(void) {
CreateWindow();
}
What is the difference between _cbButton and cbButton?
Thank you!
How do you flip the button 90 and the text on it?
When to use _cbCallback and when _cbDialog?
Hello.
If you need to display some variable with constant refreshing period (for example 200 ms) you can use Timer for it.
Here is a small example that explains the principle:C Display MoreWM_HWIN hLabel; static void cbWindow(WM_MESSAGE * pMsg) { char* str = getValue(); // some getter, that gets stringified value to display switch (pMsg->MsgId) { case WM_TIMER: WM_RestartTimer(pMsg->Data.v, 200); // restart timer to 200ms for next timer message TEXT_SetText(hLabel, str); // shows the value break; default: WM_DefaultProc(pMsg); break; } } WM_HWIN createWindow() { WM_HWIN hWindow = WINDOW_CreateEx(0, 0, 320, 240, WM_HBKWIN, WM_CF_SHOW, 0, 0, cbWindow); hLabel = TEXT_CreateEx(10, 10, 100, 30, hWindow, WM_CF_SHOW, 0, 0, NULL); WM_CreateTimer(hWindow, 0, 0, 0); // create timer for periodical value show return hWindow; }
Thank you. However, I don't know how to integrate it into my program. I have the external variable "poster", they have to be numbers 1 to 6. They change in another part of the program. I want to display the variable value on an ongoing basis. I have prepared ID_TEXT_3 but I do not know how to display it to reflect the changes.
Display More/*
* myrolster.c
*
* Created on: 04.02.2019
* Author: P
*/
#include "stm32746g_discovery.h"
#include "stm32746g_discovery_lcd.h"
#include "stm32746g_discovery_sdram.h"
#include "stm32746g_discovery_ts.h"
#include "GUI.h"
#include "DIALOG.h"
#include "WM.h"
#include "BUTTON.h"
#include "EDIT.h"
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
#define ID_BUTTON_2 (GUI_ID_USER + 0x03)
#define ID_SPINBOX_0 (GUI_ID_USER + 0x08)
#define ID_SPINBOX_1 (GUI_ID_USER + 0x09)
#define ID_TEXT_0 (GUI_ID_USER + 0xA0)
#define ID_TEXT_1 (GUI_ID_USER + 0xA1)
#define ID_TEXT_2 (GUI_ID_USER + 0xA2)
#define ID_TEXT_3 (GUI_ID_USER + 0xA3)
#define WORK 600
extern int posters;
extern int poster;
extern int showing;
void Stop(void);
void Up(void);
void Down(void);
void Working(void);
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0,
0 }, { BUTTON_CreateIndirect, "scrollset", ID_BUTTON_0, 20, 10,
440, 60, 0, 0x0, 0 }, { BUTTON_CreateIndirect, "up",
ID_BUTTON_1, 20, 100, 170, 50, 0, 0x0, 0 }, { BUTTON_CreateIndirect,
"down", ID_BUTTON_2, 20, 190, 170, 50, 0, 0x0, 0 }, {
SPINBOX_CreateIndirect, "postershow", ID_SPINBOX_0, 290, 100,
170, 50, 0, 0x0, 0 }, { SPINBOX_CreateIndirect, "time",
ID_SPINBOX_1, 290, 190, 170, 50, 0, 0x0, 0 }, { TEXT_CreateIndirect,
"signatureposters", ID_TEXT_0, 265, 140, 160, 40, 0, 0x0, 0 }, {
TEXT_CreateIndirect, "signaturetime", ID_TEXT_1, 275, 230, 160,
40, 0, 0x0, 0 }, { TEXT_CreateIndirect, "signatureposter",
ID_TEXT_2, 120, 160, 160, 40, 0, 0x0, 0 }, { TEXT_CreateIndirect,
"poster", ID_TEXT_3, 165, 75, 100, 100, 0, 0x0, 0 }, };
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
WM_HWIN hEdit;
int NCode;
int Id;
static int isButton_0 = 1;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00A00000));
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetFont(hItem, GUI_FONT_32B_ASCII);
BUTTON_SetText(hItem, "SETTING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "UP");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
BUTTON_SetFont(hItem, GUI_FONT_20B_ASCII);
BUTTON_SetText(hItem, "DOWN");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
hEdit = SPINBOX_GetEditHandle(hItem);
EDIT_SetDecMode(hEdit, 0, 1, 6, 0, 0);
EDIT_SetTextAlign(hEdit, GUI_TA_HCENTER);
SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
SPINBOX_SetFont(hItem, GUI_FONT_32B_ASCII);
SPINBOX_SetTextColor(hItem, SPINBOX_CI_ENABLED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
hEdit = SPINBOX_GetEditHandle(hItem);
EDIT_SetDecMode(hEdit, 0, 10, 180, 0, 0);
EDIT_SetTextAlign(hEdit, GUI_TA_HCENTER);
SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
SPINBOX_SetFont(hItem, GUI_FONT_32B_ASCII);
SPINBOX_SetStep(hItem, 10);
SPINBOX_SetTextColor(hItem, SPINBOX_CI_ENABLED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "POSTERS");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "SHOW TIME");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "POSTER");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_D80);
TEXT_SetTextColor(hItem, GUI_RED);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id) {
case ID_BUTTON_0:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
if (isButton_0) {
isButton_0 = 0;
BUTTON_SetText(hItem, "SCROLLING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetTextColor(hItem, 0, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
WM_DisableWindow(hItem);
} else {
isButton_0 = 1;
BUTTON_SetText(hItem, "SETTING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetTextColor(hItem, 0, GUI_BLACK);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
WM_EnableWindow(hItem);
}
break;
case WM_NOTIFICATION_RELEASED:
if (!isButton_0) {
Working();
}
break;
}
break;
case ID_BUTTON_1:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
if (isButton_0) {
Up();
}
break;
case WM_NOTIFICATION_RELEASED:
Stop();
break;
}
break;
case ID_BUTTON_2:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
if (isButton_0) {
Down();
}
break;
case WM_NOTIFICATION_RELEASED:
Stop();
break;
}
break;
case ID_SPINBOX_0:
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
posters = SPINBOX_GetValue(pMsg->hWinSrc);
break;
}
break;
case ID_SPINBOX_1:
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
showing = SPINBOX_GetValue(pMsg->hWinSrc);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
_cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
void MainTask(void);
void MainTask(void) {
GUI_Clear();
CreateWindow();
}
Thank you for the changes and comments on the programming style. Now I will check how it goes.
/*
* myrolster.c
*
* Created on: 04.02.2019
* Author: P
*/
#include "stm32746g_discovery.h"
#include "stm32746g_discovery_lcd.h"
#include "stm32746g_discovery_sdram.h"
#include "stm32746g_discovery_ts.h"
#include "GUI.h"
#include "DIALOG.h"
#include "WM.h"
#include "BUTTON.h"
#include "EDIT.h"
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
#define ID_BUTTON_2 (GUI_ID_USER + 0x03)
#define ID_SPINBOX_0 (GUI_ID_USER + 0x08)
#define ID_SPINBOX_1 (GUI_ID_USER + 0x09)
#define ID_TEXT_0 (GUI_ID_USER + 0xA0)
#define ID_TEXT_1 (GUI_ID_USER + 0xA1)
#define ID_TEXT_2 (GUI_ID_USER + 0xA2)
#define ID_TEXT_3 (GUI_ID_USER + 0xA3)
#define WORK 600
extern int posters;
extern int poster;
extern int showing;
void Stop(void);
void Up(void);
void Down(void);
void Working(void);
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0,
0 }, { BUTTON_CreateIndirect, "scrollset", ID_BUTTON_0, 20, 10,
440, 60, 0, 0x0, 0 }, { BUTTON_CreateIndirect, "up",
ID_BUTTON_1, 20, 100, 170, 50, 0, 0x0, 0 }, { BUTTON_CreateIndirect,
"down", ID_BUTTON_2, 20, 190, 170, 50, 0, 0x0, 0 }, {
SPINBOX_CreateIndirect, "postershow", ID_SPINBOX_0, 290, 100,
170, 50, 0, 0x0, 0 }, { SPINBOX_CreateIndirect, "time",
ID_SPINBOX_1, 290, 190, 170, 50, 0, 0x0, 0 }, { TEXT_CreateIndirect,
"signatureposters", ID_TEXT_0, 265, 140, 160, 40, 0, 0x0, 0 }, {
TEXT_CreateIndirect, "signaturetime", ID_TEXT_1, 275, 230, 160,
40, 0, 0x0, 0 }, { TEXT_CreateIndirect, "signatureposter",
ID_TEXT_2, 120, 160, 160, 40, 0, 0x0, 0 }, { TEXT_CreateIndirect,
"poster", ID_TEXT_3, 165, 75, 100, 100, 0, 0x0, 0 }, };
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
WM_HWIN hEdit;
int NCode;
int Id;
static int isButton_0 = 1;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00A00000));
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetFont(hItem, GUI_FONT_32B_ASCII);
BUTTON_SetText(hItem, "SETTING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
BUTTON_SetText(hItem, "UP");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
BUTTON_SetFont(hItem, GUI_FONT_20B_ASCII);
BUTTON_SetText(hItem, "DOWN");
BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
hEdit = SPINBOX_GetEditHandle(hItem);
EDIT_SetDecMode(hEdit, 0, 1, 6, 0, 0);
EDIT_SetTextAlign(hEdit, GUI_TA_HCENTER);
SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
SPINBOX_SetFont(hItem, GUI_FONT_32B_ASCII);
SPINBOX_SetTextColor(hItem, SPINBOX_CI_ENABLED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
hEdit = SPINBOX_GetEditHandle(hItem);
EDIT_SetDecMode(hEdit, 0, 10, 180, 0, 0);
EDIT_SetTextAlign(hEdit, GUI_TA_HCENTER);
SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
SPINBOX_SetFont(hItem, GUI_FONT_32B_ASCII);
SPINBOX_SetStep(hItem, 10);
SPINBOX_SetTextColor(hItem, SPINBOX_CI_ENABLED, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "POSTERS");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "SHOW TIME");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
TEXT_SetTextColor(hItem, GUI_WHITE);
TEXT_SetText(hItem, "POSTER");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
TEXT_SetFont(hItem, GUI_FONT_D80);
TEXT_SetTextColor(hItem, GUI_RED);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id) {
case ID_BUTTON_0:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
if (isButton_0) {
isButton_0 = 0;
BUTTON_SetText(hItem, "SCROLLING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetTextColor(hItem, 0, GUI_RED);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
WM_DisableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
WM_DisableWindow(hItem);
} else {
isButton_0 = 1;
BUTTON_SetText(hItem, "SETTING");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetTextColor(hItem, 0, GUI_BLACK);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
WM_EnableWindow(hItem);
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
WM_EnableWindow(hItem);
}
break;
case WM_NOTIFICATION_RELEASED:
if (!isButton_0) {
Working();
}
break;
}
break;
case ID_BUTTON_1:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
if (isButton_0) {
Up();
}
break;
case WM_NOTIFICATION_RELEASED:
Stop();
break;
}
break;
case ID_BUTTON_2:
switch (NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
if (isButton_0) {
Down();
}
break;
case WM_NOTIFICATION_RELEASED:
Stop();
break;
}
break;
case ID_SPINBOX_0:
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
posters = SPINBOX_GetValue(pMsg->hWinSrc);
break;
}
break;
case ID_SPINBOX_1:
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
showing = SPINBOX_GetValue(pMsg->hWinSrc);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
_cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
void MainTask(void);
void MainTask(void) {
GUI_Clear();
CreateWindow();
}
Thank you. However, I don't know how to integrate it into my program. I have the external variable "poster", they have to be numbers 1 to 6. They change in another part of the program. I want to display the variable value on an ongoing basis. I have prepared ID_TEXT_3 but I do not know how to display it to reflect the changes.
How to display the variable value on the screen?
I want to read the number set in SPINBOX, can it be that way?
case ID_SPINBOX_1:
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
showing = SPINBOX_GetValue(pMsg->hWinSrc);
break;
}
break;