emwin中checkbox怎么用

emwin中checkbox怎么用,第1张

复选框是选择各种不同选项的最常用控件之一。用户可选中或取消选中复选框,并且可一次选中任意个框。使用键盘界面时,被聚焦的复选框的状态可使用<SPACE>键切换。禁用的框显示为灰色,如下图所示,其中描述了每种可能的复选框的外观:

开启皮肤色后显示效果如下:

41.2 官方WIDGET_CheckBox实例

官方的这个例子做的很好,充分的演示了复选框的各个状态。这个例子在模拟器中的位置:

41.2 源代码如下(主要看WIDGET_Checkbox中的代码):

#include <stddef.h>

#include "GUI.h"

#include "DIALOG.h"

#include "Main.h"

/*********************************************************************

*

* Static data

*

**********************************************************************

*/

//

// Dialog resource

//

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {(1)

{ FRAMEWIN_CreateIndirect, "Check box sample", 0, 10, 10, 300, 220, FRAMEWIN_CF_MOVEABLE},

{ TEXT_CreateIndirect, "Enabled:", 0, 5, 10, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK0, 5, 30, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK1, 5, 60, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK2, 5, 90, 120, 20 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK3, 5, 125, 120, 26 },

{ TEXT_CreateIndirect, "Disabled:", 0, 150, 10, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK4, 150, 30, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK5, 150, 60, 120, 0 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK6, 150, 90, 120, 26 },

{ CHECKBOX_CreateIndirect, 0, GUI_ID_CHECK7, 150, 125, 120, 26 },

{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 10, 170, 60, 20 },

{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 225, 170, 60, 20 },

}

//

// Check box text

//

static const char * _apLabel[] = {(2)

"Default",

"3 States",

"Box XL",

"Box XXL"

}

/*********************************************************************

*

* Static code

*

**********************************************************************

*/

/*********************************************************************

*

* _cbCallback

*/

static void _cbCallback(WM_MESSAGE * pMsg) {

WM_HWIN hDlg

WM_HWIN hItem

int i

int NCode

int Id

hDlg = pMsg->hWin

switch (pMsg->MsgId) {

case WM_INIT_DIALOG:

WM_GetDialogItem(hDlg, GUI_ID_CHECK0)

for (i = 0i <8i++) {(3)

int Index = i % 4

hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK0 + i)// Get the handle of the desired checkbox

CHECKBOX_SetText(hItem, _apLabel[Index])// Set the check box text(4)

switch (Index) {

case 1:(5)

//

// Set the number of possible states to 3

//

CHECKBOX_SetNumStates(hItem, 3)(6)

//

// Use user defined bitmaps for the third state

//(7)

CHECKBOX_SetImage(hItem, &_abmBar[0], CHECKBOX_BI_INACTIV_3STATE)// Used if widget is disabled

CHECKBOX_SetImage(hItem, &_abmBar[1], CHECKBOX_BI_ACTIV_3STATE)// Used if widget is enabled

CHECKBOX_SetState(hItem, 2)(8)

break

case 2:(9)

CHECKBOX_SetState(hItem, 1)

//

// Use user defined bitmaps for the 'checked' state

//

CHECKBOX_SetImage(hItem, &_abmXL[0], CHECKBOX_BI_INACTIV_CHECKED)// Used if widget is disabled

CHECKBOX_SetImage(hItem, &_abmXL[1], CHECKBOX_BI_ACTIV_CHECKED)// Used if widget is enabled 

CHECKBOX_SetFont(hItem, &GUI_FontComic18B_ASCII)

break

case 3:(10)

CHECKBOX_SetState(hItem, 1)

//

// Use user defined bitmaps for the 'checked' state

//

CHECKBOX_SetImage(hItem, &_abmXXL[0], CHECKBOX_BI_INACTIV_CHECKED)// Used if widget is disabled

CHECKBOX_SetImage(hItem, &_abmXXL[1], CHECKBOX_BI_ACTIV_CHECKED)// Used if widget is enabled 

CHECKBOX_SetFont(hItem, &GUI_FontComic24B_ASCII)

break

}

//

// Disable all check boxes shown on the right side of the dialog

//

if (i >= 4) {(11)

WM_DisableWindow(hItem)

}

}

break

case WM_NOTIFY_PARENT:

Id = WM_GetId(pMsg->hWinSrc)// Id of widget

NCode = pMsg->Data.v// Notification code

switch (NCode) {

case WM_NOTIFICATION_RELEASED: // React only if released

if (Id == GUI_ID_OK) { // OK Button

GUI_EndDialog(hDlg, 0)

}

if (Id == GUI_ID_CANCEL) { // Cancel Button

GUI_EndDialog(hDlg, 1)

}

break

}

break

default:

WM_DefaultProc(pMsg)

}

}

/*********************************************************************

*

* Public code

*

**********************************************************************

*/

/*********************************************************************

*

* MainTask

*/

void MainTask(void) {

#if GUI_SUPPORT_MEMDEV

WM_SetCreateFlags(WM_CF_MEMDEV)

#endif

GUI_Init()

WM_SetDesktopColor(GUI_BLACK)

while (1) {

GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0)

GUI_Delay(500)

}

}

41.1.1 复选框支持的通知代码

以下事件是复选框控件作为WM_NOTIFY_PARENT消息的一部分发送给其父窗口的:

消息 描述 

WM_NOTIFICATION_CLICKED 复选框已被点击。 

WM_NOTIFICATION_RELEASED 复选框已被释放。 

WM_NOTIFICATION_MOVED_OUT 复选框已被点击,且指针已移出复选框并且没有释放。 

WM_NOTIFICATION_VALUE_CHANGED 复选框的状态已改变。 

41.1.2 按钮支持键盘反应

如果控件具有输入焦点,则它将对下列各键做出反应:

按键 反应 

GUI_KEY_SPACE 切换小工具的选中状态

楼主,您好!参考说明4850程序输入说明,将程序符号输入.....公路全站仪中线放样程序注意:因程序的0(零)和O易混淆,所以字母O用较大的全角符号,零仍用标准字。程序输入时应连续输入,无空格。而且输入时文件名需和给出的一样,否则会出现调用文件错误。变量说明:<程序运算符定义>X输入摆站点的x坐标C输入第一个曲线角桩x坐标I输入中间曲线角桩的x坐标Y输入摆站点的y坐标D输入第一个曲线角桩y坐标J输入中间曲线角桩的y坐标E最后一个曲线角桩x坐标R中间曲线半径L中间曲线缓和曲线长F最后一个曲线角桩y坐标K第一个K为中间角桩桩号S中间角桩曲线总长,检验用K第二个K为要测设的桩号B测中桩时输入0,测边桩时输入宽度(左输负值,右输正值)文件:F1 文件名:1 L1

L2

L3Defm 8

XYCDIJEFRLK:Fixm:Z[2]=0:Prog B

Z[5]=0.5L-L Xy 3/240R2:Z[3]=Z[5]+(R+L2/24R)Abs tan T┛2:Z=K-Ans:S=R Abs Tπ/180+L:S◢H=Z+Ans:G=RL:Prog 2文件:F2 文件名:2 L1

L2

L3

L4

L5

L6

L7

L8

L9

L10

L11

L12Lbl 0:Fixm:{K}

Lbl 6:{B}:Norm:K(-1) Xy Z[2]>(H-L)(-1) Xy Z[2]=>Goto 4⊿Frac Z[2]┛2=0=>Z[6]=Z:≠>Z[6]=H⊿A=90T/Abs T

B<0=>N=0:≠>N=1⊿B=Abs B

0=Abs(K-Z[6]:K(-1) Xy Z[2]>Z[6](-1) Xy Z[2]=>Goto 2⊿Q=Z[3]+0:Z[4]=B

B≠0=>Prog C⊿Prog D:P=0

Prog E:Goto 0

Lbl 2:0≥L=>Goto 3⊿

Q=Z[3]-0+0 Xy 5/40G2:Z[4]=0 Xy 3/6G-0 Xy 7/336G Xy 3:Prog D:P=B

B≠0=>Prog F⊿Prog E:Goto 0

Lbl 3:Q=Z[3]-Z[5]:Z[4]=R+L2/24R:Prog D

Z[8]=U+A(2(0-L)/πR-1+L/πR):B≠0=>Prog G:≠>P=R⊿Prog E:Goto 0

Lbl 4:M=C:0=D:C=E:D=F:E=M:F=0:Z[2]=Z[2]+1:Prog B:Goto 6文件:F3 文件名:0 L1Pol(M,0):W<0=>W=W+360文件:F4 文件名:B L1

L2M=E-I:0=F-J:Prog 0:T=W:M=I-C:0=J-D:Prog 0:U=W:T=T-W

T<-180=>T=T+360⊿T>180=>T=T-360文件:F5 文件名:C L1A=-90(-1) Xy (N+Z[2])文件:F6 文件名:D L1Z[7]=I-QcosU+Z[4]cos(U+A):Z[1]=J-QsinU+Z[4]sin(U+A)文件:F7 文件名:E L1

L2M=Z[7]+PcosZ[8]-X:0=Z[1]+PsinZ[8]-Y:Prog 0

W◢Fix 3:V◢Norm文件:F8 文件名:F L1Z[8]=U+A+A02/πG+90+A(-1) Xy (N+Z[2])文件:F9 文件名:G L1P=R+AB(-1) Xy (N+Z[2])/90任意点经纬仪放样程序文件:F1 文件名:YYDFY Y=999:I"RESET[Y┛N]"≠Y=>Goto 6⊿ ←

Defm 1:B"JD"A"PJ(DEG)":C=90H"Lh"÷πR:P=H2÷24R:Q=H┛2-H^3÷240R2:T=Q+(R+P)tan A┛2:L=2H+πR(A-2C)÷180:D=B-T:F=D+H:K=D+L┛2:S=D+L:N=S-H:"YH=":Pause 0:Z[1]"E"=(R+P)cos A┛2-R◢ ←

Lbl 6:Fixm:{Z}:H=S-N:D=F-H:B=D+T:Z"<<888=>(INSTAL)KM+m(r,σ;X,Y)"=888=>{CVWJUE}:C"(ZPJ)=1(YPJ)≠1"V"Xπ"W"Yπ(Z-,Y+)"J"Xh"U"Yh(Z-,Y+)"E"(D°M°S°)":Goto 6⊿←

Z≤D=>X=Z-D:Y=0:P=0:Goto 9⊿Z≥S=>X=T+cos A(Z-S+T):Y=sin A(Z-S+T):P=0:Goto 9⊿Z>F=>Z<N=>Goto 8⊿⊿Z≤F=>0=Z-D:≠>0=S-Z⊿ ←

H≠0=>X=0-0^5÷40R2H2:Y=0^3÷6RH-0^7÷336R^3H^3:P=3tan-1Y┛X:Z≥N=>G=Y÷tan A:I=Y÷sin A:0=X-G:X=T(1+cos A)-0cos A-I:Y=sin A(T-0)⊿Goto 9⊿←

Lbl 8:P=180(K-Z)÷πR:X=R√(2-2cos Abs P):I=√(X2+Z[1]2-2XZ[1]cos(90+Abs P÷2):0=sin-1(Xsin(90+Abs P÷2)÷I:G=A÷2+0:X=T-Isin G:Y=Icos G ←

Z≤K=>Goto 9⊿0≥A÷2=>G=0-A÷2:X=T+Isin G:Y=Icos G:Goto 9⊿X=T-Isin(A÷2-0):Y=Icos(A÷2-0)

Lbl 9:C=1=>Y=-Y⊿B=X:H=Y ←

Lbl 3:X"Xp"Y"Yp":X=V=>G=0:Y>W=>G=90⊿Y<W=>G=270⊿Goto 1⊿G=Abs tan-1(Y-W)┛(X-V) ←

X<V=>Y≤W=>G=180+G:≠>G=180-G⊿≠>Y<W=>G=360-G⊿⊿ ←

Lbl 1:J=V=>U>W=>I=270:≠>I=90⊿Goto 2⊿I=Abs tan-1(U-W)┛(J-V) ←

J>V=>U>W=>I=360-I⊿⊿J<V=>U>W=>I=180+I:≠>I=180-I⊿⊿ ←

Lbl 2:0√((X-V)2+(Y-W)2):"DIST(r)=":Pause 0:G=G+I+E:G≥720=>G=G-720⊿G≥360=>G=G-360⊿G"DEG(σ)="◢

Lbl 5:D=F+N-S:{MLGXY}:M"K=>(<<)A=>(X,Y)h=>(r,σ)B=>(FBZ)"=A=>Goto 4⊿M=h=>Goto 3⊿M=B=>L"JU ZHONG(m)(Z-)(Y+)":Goto 6⊿ ←

C=1≠>L=-L⊿Z≥N=>X=B-Lsin(A-P):C=1=>L=-L⊿Y=H+Lcos(A-P):Goto 3⊿Z≤F=>X=B-Lsin P:C=1=>L=-L⊿Y=H+Lcos P:Goto 3⊿X=B-Lsin(A÷2-P):C=1=>L=-L⊿Y=H+Lcos(A÷2-P):Goto 3⊿ ←

Lbl 4:D=L"DEG(σ)A{G}"-I-E:D<0=>D=360-D⊿Fixm:{Q}:X=V+Q"DIST(r)A{Q}"cosD:"X=":Pause 0:Y=W+Qsin D⊿ ←

Goto 5竖曲线标高计算程序变量说明:<程序运算符定义>A前一个变坡点桩号B前一个变坡点高程R中间变坡点半径C中间变坡点桩号D中间变坡点高程G前段坡度E后一个变坡点桩号F后一个变坡点高程H后段坡度L中间曲线的切线长I所求点的高程J切线至竖曲线的竖向距离K所求桩号文件1 程序名:SQX ABCD:Lbl 0:{ERF}:REF:G=(D-B)÷(C-A):H=(F-D)÷(E-C):L=R×Abs(G-H)÷2 ←

Lbl 1:{K}:K≤0=>Goto 2⊿K≤C+L=>L=-Abs L:Prog "SHU":M=D+(K-C)H+J:≠>M=D+(K-C)H:"AFTER QX"⊿L=Abs L:K≤C=>Prog "SHU":M=B+(K-A)G+J⊿K≤C-L=>M=B+(K-A)G⊿M=1000M:Prog "SSWR":I=M÷1000◢

K=K+20:Goto 1:Lbl 2:A=C:B=D:C=E:D=F:Goto 0文件2 程序名:SHU J=(K-C+L)2÷(2R):G-H>0=>J=-J⊿文件3 程序名:SSWR M-Int M<0.5=>M=Int M:≠>M=Int M+1⊿很高兴为您解答!

efm是设备独立性的一种格式,也就是说Eefm可以始终保持着图形的精度,而无论用打印机打印出何种分辨率(dot/inch)的硬拷贝。而在网路上,较小的efm格式可以节省带宽。

用WINDOWS自带的图片和传真查看器能打开看到图片效果,或者用ACDSee转下格式,flash8也能输出*emf格式文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11118476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存