|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- 花键轴设计的主程序 Database_main.cpp : implementation file
0 p! ^2 n5 S1 G1 _( B
! R4 ?- Q, l, M- N7 }- . t( c0 g6 \4 Q9 [' ~- B
- , }! h @: c5 d1 _- K6 M: y1 u
- #include "stdafx.h"
, S% A% z0 t* ^ Q% m- B
" g! k; ^! m" z- L3 i5 y/ A5 \- #include "app_data.h"
3 d& G8 _- D9 |3 M/ l% _ - / {1 o' E' m' [+ z1 \5 G4 o3 M+ h
- #include "Database_main.h"
: L( f( i' [4 a) S X; K
. }. r/ F5 C: k/ Q# ]1 X9 n- 8 [/ [3 y4 t9 k6 u, ^) |
- 3 p- w" y) {! G* ~( A! p( ~% S
- #ifdef _DEBUG( ?0 \7 r, \" n& [& d4 H9 e
$ p6 M2 A. V5 T) f" {- #define new DEBUG_NEW/ g- j# K+ L8 \
: D5 q3 x, Z6 e5 k, }! g- #undef THIS_FILE) v* \+ }* p2 \
- $ `8 H6 U, q4 x* u/ h3 ?* Y) u
- static char THIS_FILE[] = __FILE__;, N9 P2 N8 q# d r8 [# Q
- . q% }6 f& q6 A0 Q% K: S2 m4 e
- #endif
& J7 c' \4 b7 w% m$ e
& I* Y4 j C. A g' c; W-
4 e/ m, G# `& |% c
! U8 l5 c, k5 ~1 C- CDatabase_main::CDatabase_main(CWnd* pParent /*=NULL*/)# n. K) r3 F; Z, U+ o
. p' g( j' C, }9 A1 {; i/ L- : CDialog(CDatabase_main::IDD, pParent)
/ h. y& E u: N8 V
/ ~' i/ d, K, g- {
' t4 u- `8 \8 x) _ - $ \9 V4 E" z# E: i6 H" `1 G* v
- //{{AFX_DATA_INIT(CDatabase_main)
1 ?7 B. ]2 T$ Y2 Q6 D7 f4 ?
& {$ T7 Y$ l* N- // NOTE: the ClassWizard will add member initialization here* b8 ?+ A# F& B) `/ r, r) Q
- + z/ P' U } ^
- //}}AFX_DATA_INIT
$ D+ U: o/ p9 I; E - ! I- S6 s2 [% m; E! T5 a+ U. O
- }
$ T% w) [, \( X
. I9 b4 \' O4 z; |1 }! ^-
" N& K6 Y9 Q# W: b2 s. @ - % r$ ]0 G4 X. c
-
8 B: l% h# A8 y, O) V; @8 I* z
0 q" }9 Y: y" ^2 S2 c% F: [7 ^- void CDatabase_main::DoDataExchange(CDataExchange* pDX)
& U# g$ K* i1 x" j, n - 9 [% N& q1 r3 E6 O9 V6 ~
- {- d& }5 y- G' P
* G: R Q; E1 V' W) X* z- CDialog::DoDataExchange(pDX);
$ g2 i s6 n E' H5 G; p - ; n% l: t, [8 W, t8 [! [
- //{{AFX_DATA_MAP(CDatabase_main)! _' k+ U7 H7 g I& W/ p
- 9 X- f! t" M: |! X2 u
- DDX_Control(pDX, IDC_LIST_PARA, m_list_control);
2 c0 }1 T4 j$ N9 w& H - : R. s: ^0 I1 f( v
- //}}AFX_DATA_MAP9 W _4 r4 C* t$ _' w, e
- $ O2 D: v8 ] b. B4 l% F' Q
- }6 ~! c! J& P. @+ _6 m# i9 }% o
+ ?! G* D3 K& A- N( v$ c- BEGIN_MESSAGE_MAP(CDatabase_main, CDialog)* L3 s) Z/ Y5 l ?4 y
* O( P* L% b/ j- //{{AFX_MSG_MAP(CDatabase_main)
8 V' n, H7 W" h! @' w1 l2 | - & z9 w; D8 {3 c; R: z/ g
- ON_WM_DESTROY()
$ u4 |6 ]9 f9 |* I - # @" |# s7 t k$ T
- //}}AFX_MSG_MAP
& C5 Z. _' F" ]. d3 X4 d2 B. B
2 m9 W& c% \+ x3 R/ r7 b& L4 x# ]* Z+ v- END_MESSAGE_MAP(), c- r% t# z" ?4 E* B, ^* D. n
4 B5 o# ]# l0 n' j& @3 n/ Q-
" ~/ y" A" E3 j* u& ~- v- X* k
. K. `4 M$ w" i0 M0 e# J; k( A0 }- BOOL CDatabase_main::OnInitDialog()
& g U& v+ W# a" f) J g
1 o: b4 G1 k9 m. P5 \5 t- {
/ a1 U" ^+ i' z0 N
0 U/ ~6 Y+ ]- ?- CDialog::OnInitDialog();$ y- ]) ^2 b4 j" T8 p X
3 s5 `/ E" l3 W7 s! ^! S5 U-
$ c; t, @- T, e - 5 [# m% J' A, \6 I2 b3 j) ]% }
- // TODO: Add extra initialization here% w- R4 l9 g( M. ? u
: L4 g3 F& q, H# y3 M6 t- try{
H" n! `; {$ n4 m, v2 B8 y7 q
1 _; v, J, q) K/ e6 W) }- L- m_pdatabase=new CDatabase();
* D$ O+ c- i6 `' G2 m2 p1 s - 8 t9 f/ l) b5 p
- m_pset=new CRecordset();
* y- M, a$ U# y' k8 d; \3 x
1 i4 J' w* m z- O- m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
# ~8 n) z. @% h- m8 S - + b5 p1 z2 F( d1 y7 e( Y' [" Z1 f& ^
- m_pset->m_pDatabase=m_pdatabase; . h! a4 x! G9 C& L6 U& j
# h# T D1 Y6 x$ C- }
% w- g7 D; ^' I7 w/ e - 8 X0 f2 n. ~! R7 X) O
- caTCh(CDBException* e){
" t8 `8 ~+ v, E7 O6 @
+ o9 A8 O; I' r( m |- e->ReportError();
/ W- R" c5 J+ Y0 @2 g
6 Y- A/ ^" F' @( V5 j3 U8 T4 r- e->Delete();
1 w4 w0 D" H3 v9 K
! h0 g; _2 I/ n/ ^* Q0 g, y- delete m_pset;
! M& i* b' h" K* S
4 K, h9 L) l* f8 N" o6 ?- delete m_pdatabase;! u- z1 P& Y! `5 x# N# ~
@# u8 w p3 A- F- return TRUE;}! l. X0 k2 }, T t4 X& Y
- + I0 i4 i9 z7 s
- DataShow("data");) W' q/ \4 u: u1 N$ n! ]
- ' v' q" Z- D) [
- return TRUE; // return TRUE unless you set the focus to a control, t; b4 x4 j! `7 P% I( z% N
- ' ^% L0 \% q/ m# W- d0 r& N% c& t
- // EXCEPTION: OCX Property Pages should return FALSE
+ J( d0 `( B# T- a5 s' a" @ - + s* y1 r$ L7 }- X1 t
- }% m q9 e6 b' D% }1 h4 A: W
- 4 i/ S+ @( D" O: l$ z
- void CDatabase_main::ClearList()
' t. W/ `# {* w" V - * S" h6 H( @5 [& ?( ]/ ~
- {
* N$ p" c; X) I# x% I, B - $ L" E- W- b% I7 M: M5 D# U. G7 w# u
- //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);; U& Z4 |! b1 V$ v( @1 G
- - @3 q8 N7 K8 @" b# k7 |
- //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);$ g7 ]! ~5 O# ~
- + \1 [; E" ?5 R
- m_list_control.DeleteAllItems();
6 A" a) y; @1 I4 r& Z* o8 r
% W, J0 ?/ w9 x) V9 n" X- while(m_list_control.DeleteColumn(0));! |! h7 o0 t5 q$ ]9 o% o8 N
- / J/ C$ I$ |& y; b; L" k; l2 ^6 ~- Y) p
- UpdateWindow(); k0 ?2 u' w4 L$ P; a! F
8 K9 a$ r" V% I2 A- }3 _2 U$ f$ q/ n: X8 @5 O9 t
- 9 b. d: E6 y* H6 j+ L+ C
- void CDatabase_main::DataShow(CString table_name)+ ?( p# M9 Q2 v% @
$ w% g; `" \; X8 C- {$ s) a: j1 J+ \6 M' X0 i
4 P) M. J5 B' ]( A2 L1 ]- ClearList();9 c B3 h/ h5 s8 X0 t
- ; O% d+ K0 E- r, s1 @& k B! u) Y
- CString strSQL;1 H, N8 L( _3 ]; g1 x6 `
- 5 j6 U4 I4 {7 H- N+ E
- strSQL="select * from "+table_name;7 _# E9 f* P# h. c
+ e( @0 R$ k& e0 F- l# j: O2 v- ShowInformation(strSQL);
2 K: b) l: E' q! y
* N1 @: }, `& B- } ?- k: `2 O0 v/ g* P+ m
- , y* G0 x# ^$ k( Y4 W7 z
- - J' J* P U/ A
- ' t4 w9 }+ g) n. @4 h
- BOOL CDatabase_main::ShowInformation(CString strSQL)+ u; z* Z" X6 ^* s6 k) B
- " R) y7 J* n" M
- {( O5 e2 V" t! x% r& u4 J6 X
; {3 c3 p- L3 m$ C$ F) b1 ?- if(!m_pdatabase->IsOpen()) return FALSE;/ _ J9 }% b R( \& s; _
% E* p/ s5 u1 U+ G- if(!m_pset) return FALSE;( X+ w( O9 v: s' j4 b" c+ {& p) C% w4 z
- 8 \' c* p- }. ^3 D0 T
- try{
! {$ L# E# `+ @5 O! a3 m6 o
( H# |# `& c8 D: e- \- BeginWaitCursor();0 V, d! c" U/ |0 u
- 2 L3 J4 |. X$ L4 r
- if(m_pset->IsOpen()) m_pset->Close();8 ~9 u0 P8 ]) e- [& G) C! l
8 d$ y. }* Y- @5 D. M2 H+ P- m_pset->Open(CRecordset::dynaset,strSQL);3 Y( W$ Q: b1 j( R6 y. B" @
1 c" t. v1 W, ^. N! v( h- if(!m_pset->IsEOF())
, D* ~3 U1 W1 z1 C+ f! o" P/ D
6 s$ q( S' f1 \- {m_pset->MoveLast();
+ B7 [, k! L! M B - 9 Q% ]2 O% ~7 A5 D
- m_pset->MoveFirst();}1 n8 }# z9 F# P1 L( b; s5 e
- # T/ d9 F/ k, V! O% D. h; V
- nFieldCount=m_pset->GetODBCFieldCount();; H% W4 b1 o5 e' I! E3 c
# |' ^5 t/ ?0 F& h. t( F- CODBCFieldInfo fieldinfo;
1 ^1 W# U: s- Y: n
! _5 _0 k* L' r z }- for(int n=0;n<nFieldCount;n++){
' T5 \& r$ A# E- ? O, a3 Y# T' b8 \
4 c! B2 O: H: W5 X8 @" B( f' g0 C- m_pset->GetODBCFieldInfo(n,fieldinfo);
) `8 S" ]8 r! U! ?3 y0 ?# h' R
- t6 G. s; u4 Z b S, O- int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;# }5 r2 {& U7 G2 P
- # {, @6 y. J* N0 B) R
- m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
) V, k9 K9 P- n5 }/ G) R8 ` - ; u* O7 n( d) n, p7 g) |6 `
- }
4 a$ V$ m$ @) v& L, X" ] - . [1 c' \9 X, Y! C5 _: ~2 `% U
- CString strValue;( _" y) Z1 C5 E) v+ F8 q4 x+ k6 U
- # Y0 e5 M0 d8 i; i0 V$ ^9 o# m# q
- m_pset->MoveFirst();4 U0 L4 Z' s- B! Y6 {# i: u
5 N& `2 y1 Y4 [" i' t9 W- int nCount=0;! W! O6 W, H3 {8 o3 ] I
- / B s5 {9 N4 X0 J- @' B
- while(!m_pset->IsEOF()){
* t F+ W0 h5 m* p - 2 i1 e# r( s% c) K( ?
- m_list_control.InsertItem(nCount,strValue);5 V. q& I5 n9 v1 K/ T! E1 p
- ) Q, q# Q* a8 n3 R' v- ?3 l/ K. L
- for(int j=0;j<nFieldCount;j++){
# O! i3 V! Y! s+ i7 s
$ J9 X& J! ^( W% m B5 j- m_pset->GetFieldValue(j,strValue);
; Z" k. `: u8 d) ]+ Z1 \ - ; O& t) P9 ~/ I5 B
- m_list_control.SetItemText(nCount,j,strValue);
; x1 ^7 |2 O) g, `/ b6 s! w
' Z6 I: K8 g$ u0 r4 ~- }
; d- h8 W* E$ ]/ l) n. |7 J) | - * g# F1 f) B% ]& g, p
- m_pset->MoveNext();
3 `* x% |: |4 B - 0 i2 A; Z, ~ {
- nCount++;( l' O6 s0 ~ `) B
4 k$ e; ^/ c& t2 y/ C# x W# M- }
& w1 }+ Z6 l+ C/ T
. k% G% b- y$ X( |7 S- EndWaitCursor();4 N: T/ M2 ]4 y2 p, C1 a
0 _" d) i7 V; ]( w+ j& D- }* h9 Z, r( j, y2 @. |- t
: b! j, b7 i+ A! i% d7 M( I" K- catch(CDBException *e){! R# C; R' i$ t- N/ l
9 ]2 }# h5 {: b* b! m- e->Delete();4 J' p( C, \# C4 L" N
$ M- ?/ F. X' p G6 ]- EndWaitCursor();
, }4 }: V3 a3 z - * X8 D! t* A" @ A0 F
- return FALSE;8 T1 h- {; {5 b) }+ r% B' A2 o. p
- 6 n: i# A' r% Q) v% n0 c- d
- }
/ x: T+ T! z n6 J+ Y: N - , t+ g6 ?! N) H
- return TRUE;
: E$ x6 A W3 s/ h6 k - ( D+ U- D0 M% W9 l! d
- }3 j7 k |$ i( f- R; {
, j$ V& \4 K4 z! l) M# X-
% l% L% {' Y1 F/ ?3 D
1 n( A! e, A: f- void CDatabase_main::OnDestroy()
9 i- O2 H8 v: O+ G
% `4 R9 H. f1 m( L |, I- {- N; u1 a; v" s. e. ]% I
% ^. j% P- p; ~* {! U5 \- CDialog::OnDestroy();
; z* ~: {$ J6 n1 d - * n0 d' ` \7 o0 a$ v
- & j1 N- d) i3 `0 N5 p3 o
- , u; Y% O3 n* b3 F* z% l
- // TODO: Add your message handler code here. \8 i4 L1 r) ?7 p! z
- 4 W) u5 B9 a' ^+ {* {
- delete m_pset;+ D1 r2 G: r8 b' `# h; b
7 H$ p1 H0 V% [9 _4 l) R$ B6 D4 o- delete m_pdatabase;
0 R2 C. `1 ?* Z1 K' }" u' f5 o# N - 0 ^5 M$ s- u: b3 r6 f. m
- }
# x& n! o7 B3 r! d; |) Z
+ [ g; N( H6 j$ R7 r* f3 L& i- extern CString str[8];
! j1 P( e9 ~3 f1 f/ x0 i
% ] g5 l) S9 F0 ]9 W7 L# V8 C; d- void CDatabase_main::OnOK()
4 D0 u3 E. Z) J2 v
! p) J3 T% q/ i9 i5 }1 s- {
/ e" ^! L# y8 I7 q9 ^' G - 0 |; }+ ?# f/ j" j/ T, E; \+ u
- // TODO: Add extra validation here
5 z. c+ q% ?" L0 Y, f
) j4 w& z! E( X! r6 X- UINT uSelectedCount=m_list_control.GetSelectedCount();& X7 M. K/ I( M2 K( m
Q0 Q k1 q" V t! i- if(uSelectedCount>1||uSelectedCount==0)( m' d( f: d" ^' W# \
- ( X. E) o; b5 y$ A
- {
9 i/ x- \* c5 C
: B$ g' u2 {* G- if(uSelectedCount==0)
_# P3 n" _: Z* I6 G
4 `. k7 A3 Z& ]. q- {
$ [0 {. M3 n7 V; Q% q0 N5 |
* b: u. E( L7 ~8 ~, z' ]$ Y- MessageBox("要选择一条参数!","提示",MB_ICONWARNING+MB_OK);* x5 A5 P9 r" I0 [4 e' g# s
- ! v9 U j2 B1 Z+ l
- return;
- [' a+ c0 A% Q' `+ P+ ^0 Q - 6 [3 f. C) O+ T
- }
( R, V% b; B: D - , W# D/ C) o, i
- if(uSelectedCount>1)
) l8 ^6 ?* |, M; P5 I% D - ; p1 x' l7 R. \1 j* }: G
- {
' I% r7 b. e3 ~5 p0 Y
- o1 N& f% X; b- MessageBox("只能选择一条参数!","提示",MB_ICONWARNING+MB_OK);- \) C3 Y' e" m0 n. D9 c
- & b3 k) L1 c f0 b
- return;
& u$ f+ d8 s5 H5 s5 E" Q& k
# h7 q7 @+ }, n8 |- }( ~/ B- }1 V# p r" }
- : m6 o2 Y+ i0 v" E# b# Q
- }# j c+ e' G0 n# v5 o3 M
- 1 y1 v' a' e' Y/ P5 ~5 o2 `
- else
! z, d3 }- Y* l# G7 e% ^ - : d; x3 j& _2 G% b! q! W) A0 J4 J0 n! ~
- { + K( g2 J' ]4 w$ m& N
- 1 P# F" R+ D5 x2 e' s
- int nItemSel=0;
, \( ^4 H# n* r, D; a
- ?7 T* R* d/ j" }0 P( H- nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);' }/ [3 U9 `# c! [2 K' Y0 S
- # K4 F8 S% N# U6 n
- for(int j=0;j<nFieldCount;j++)
1 @+ A3 ?" m' e+ Q% O& R# b - , ?0 p$ S( d. V: O3 D
- str[j]=m_list_control.GetItemText(nItemSel,j);
2 q. K3 |# [: F! E6 N+ ^$ X9 P! d - ' z: k/ U' Y: V+ F
- }' m& d& A! L$ H: s ~( f8 T
5 u* s P" F" n" _! h- CDialog::OnOK();+ \% m; `. }/ [+ L
0 _% [- F6 c9 D+ ]) R. ^7 C5 I9 l6 Y) k- }
- W! A$ T% `) Y- j. C4 v9 T
: w9 t5 E, k1 f* K* z1 } ]-
$ D' S/ t, L5 s2 g$ e5 }0 o - % B- T2 t" M- F! g+ G3 d, s
-
! M' u; F6 N+ s' h1 m+ `. O
9 R7 S- M P0 B6 J( ^- 圆头直杆圆凸模的主程序:
+ M2 R& x* u$ Q: C: K$ A - * ]3 ^: H( ^. B" W$ s# [
- 6 d+ a5 L7 o+ F( s. V; W. S
- 4 C8 W# T1 \: Y0 z
- Database_main.cpp : implementation file
+ h, R/ Q' ~# k$ d% ~ - 9 k3 _9 B5 o" Z, n. k8 S$ E
- #include "stdafx.h"9 K: `* o, y7 k+ p
1 Y9 U. G1 P6 B7 J, m! ~6 R. E- #include "tumo_data.h") V; R3 z3 @9 ~" i, |9 ^
: H6 J9 L) M% J6 p- #include "Database_main.h"5 r/ D) r9 V1 M+ r4 y$ b2 ?% z
- " Z3 u" b# ]5 r/ {
-
' \) u0 B2 k% F+ G7 I
. t+ W1 Q1 ]3 R$ _, c2 m- #ifdef _DEBUG! E5 d9 z; }' J5 A
5 l) f1 l8 i" ^9 B* R- #define new DEBUG_NEW
/ g a' n+ m+ b* e' c) x
: h8 ^* p. Z# o9 L* m- #undef THIS_FILE9 t/ k* T5 n+ E& B# c
6 ?7 i" w1 f2 Q% W, ]- d( a- static char THIS_FILE[] = __FILE__;% i, q4 C& @# z- q6 n2 }4 d
+ i7 I- p0 `* X) g2 ]& |- y3 m- #endif
% p- r ^4 s( K' A
& k2 `; \, B0 t0 y; ~- K2 p- % M8 J2 W# k, w
- * g# y' y3 E' Z, B3 w
- // CDatabase_main dialog/ o: z9 p6 T* d9 W3 m
0 ^$ y3 m- Z! R5 d1 b- CDatabase_main::CDatabase_main(CWnd* pParent /*=NULL*/)
5 c* k+ v4 B. n8 @
* U/ w8 T+ Q/ ?2 v# f" _- v/ R- : CDialog(CDatabase_main::IDD, pParent)2 @: {* J' n6 K( b
5 ]% N! a) d- U! q8 Y/ H: M4 K- {
/ d5 n6 F, X- n' z* I; ?! h
: K) E0 v' S0 P# z$ \' Q2 ~& L: R- //{{AFX_DATA_INIT(CDatabase_main). z% S4 @, V% J5 O7 B5 ^
/ M& S: P/ B1 E& Z; }; B- // NOTE: the ClassWizard will add member initialization here
% F9 G0 u) D1 R* O
' d* k1 V% c6 D+ l- //}}AFX_DATA_INIT
1 M6 I5 i+ I. f - / O2 s3 t7 v: w. p
- }; p7 T+ H- z& h# ?
- 1 s" Y+ a) k9 m+ D
- void CDatabase_main::DoDataExchange(CDataExchange* pDX)! Z$ U0 |+ C9 i* I7 k0 n6 x
0 Z0 s6 l7 ^9 c' ?$ }; |- {
1 d! F. |6 P( z - # h, `1 I/ V& U
- CDialog::DoDataExchange(pDX);1 q# E( b3 G8 A4 g& Y: Z( G
1 q- z6 k# t8 o( N- B" x- //{{AFX_DATA_MAP(CDatabase_main)
6 L- b. \& a1 H - * E( L- ]; j* K* u! N/ U
- DDX_Control(pDX, IDC_LIST_PARA, m_list_control);
* Q" a" U; h& \2 V - * \4 S Q0 z7 N! h9 M8 ^
- //}}AFX_DATA_MAP+ B& V5 Y" H- l( \' r9 N7 R
- $ p; t$ P! s% _7 |9 A: }9 R! |
- }% ?# g, q. R! f7 l8 t1 e. e
{6 U/ x( o* ^8 T- BEGIN_MESSAGE_MAP(CDatabase_main, CDialog)% C, @4 w a1 Y( v [
$ \* N- s" O, k) G- P- //{{AFX_MSG_MAP(CDatabase_main)6 Z) y8 h6 U* B7 G. n6 X* J9 a* g
- 3 A# T5 S' Q, [2 s$ `+ F# ]9 [( K4 r
- ON_WM_DESTROY()/ J! C) {: D4 G: m( q& B
" k$ o+ U" b# F5 o4 B- //}}AFX_MSG_MAP( A$ o( C& \9 \- B5 m% W8 _
$ {) A% u3 o, J8 U+ `, i- END_MESSAGE_MAP()
9 Z; C. L9 M0 }. z s - $ y/ n* q! R8 F) I
-
9 r" ~, c) o1 o# g - 2 f5 B. q1 P; n1 J( k6 c5 n, I# ]
- // CDatabase_main message handlers
# B0 p3 d% T, U- K, u
; K3 N8 X# F7 {. z- BOOL CDatabase_main::OnInitDialog()
& s) X! }$ F& G1 M+ O6 \0 ^
) ~# c8 W0 n. H! O- V3 `$ P0 D+ @3 _- {
) ]& G* \, _2 ]) s
/ H# j2 |+ d0 E- {- CDialog::OnInitDialog();" o7 d( f1 n7 E% a: L8 Y
' P9 J3 a% r; H, ]-
5 }; W! m o- g* K- ^: L$ t
, W+ Q( A# R1 b; X5 u- x6 o- // TODO: Add extra initialization here
* z9 U/ r+ O6 O9 p4 O3 F - 2 W& G+ A% X4 e( z: V5 p5 y! ^( p
- try{* y' Z W9 Q9 N K( {
- ! G$ V# ~, J0 i9 B
- m_pdatabase=new CDatabase();4 G% K' l' S0 |1 j! c0 b
2 a/ s* N1 h; `" ^- [4 O- m_pset=new CRecordset();4 h- d, J. w4 G, |2 {% b
. t5 a; H) r! g2 r- m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
8 |) j! D4 [; M! T
! K' A* ]% J. P# o7 ?- m_pset->m_pDatabase=m_pdatabase; 5 S; z, N; t7 o: S B9 j
- , r* z) I+ V- O2 c
- }+ R: i/ H+ {, D" D) q+ D
: x& ] f) v8 q% {+ l6 s" l% {- catch(CDBException* e){, N6 b0 T7 d- q' n$ [) ]' ]9 V5 \
& b, Q0 N+ y b- e->ReportError();: b$ t8 x, F, e) J ?) }
& t) q7 e- V) E+ }: M" ]5 {) K. Z- e->Delete();
6 J! T7 D* y) v2 D7 }' z7 L
; I- ?1 d# J* c) b I9 Y9 e* x- delete m_pset;& m+ `) p1 H+ s; s# |
- 6 {% \1 B* m4 |% J
- delete m_pdatabase;5 z0 [ U3 [8 f/ V9 p- o
3 k; C7 b# V. K8 e6 G2 L! L9 R4 ?- return TRUE;}: Y. q! r' y2 ?% x( @' N$ |7 I/ f
% V/ N4 B6 m- U; q- DataShow("data1");- @: p c- k+ Y' k1 N
/ @: v5 u1 _7 |- L5 @ ~' L% B- return TRUE; // return TRUE unless you set the focus to a control
+ n" P+ e3 p8 C% ?7 R" ~+ P! m - 6 A+ s& K! b4 W- j
- // EXCEPTION: OCX Property Pages should return FALSE
* {, p) [- _1 d7 p+ s6 @) Q. g - & Y' S; v; ^& S
- }
0 b$ t9 Q1 N7 m* j+ { - ' J( L, J7 @0 k+ E3 r
- void CDatabase_main::ClearList()/ C5 B/ Y8 |2 B6 O
- . ?! X3 o( R) I8 w& o- ~
- {$ O0 {: F# A% S5 K& L
0 S# M+ V; ?3 @6 v& ^( p; l- //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
' x5 Z- e) b d+ p - 2 b$ _, I( V0 Z! e3 ?
- //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
! ]; M5 _. h; E/ Q' E6 D6 J
9 T, D! K4 K5 `2 M0 A- m_list_control.DeleteAllItems();
- G: R& d) v! i6 Q - 0 y9 Q# X) d! H* M& h
- while(m_list_control.DeleteColumn(0));
! m. a" b% G5 e4 u- k# x6 t5 ?/ D - ) j6 b% z3 \: O- a* t. g+ p8 u
- UpdateWindow();
) y9 V5 r1 S6 h/ b: q: w" A E; S& G- ?8 o
, J" ?! }9 K: j. I! f6 S! r- }
+ Q0 X: H: e- D$ n2 v - 9 ~, ^6 j' `2 d+ ~ {# L8 A! ]
- void CDatabase_main::DataShow(CString table_name). y2 O: v: X2 G% X L( }2 x( n4 o
, M+ G& g0 F1 B" Z$ k9 F- {
6 M ~7 P: A0 z( A - ) \% b$ ~: n8 I) k1 K* E
- ClearList();6 q( [+ U$ C; W& ^! ]
- ' B8 @6 u0 ]" j/ }( `
- CString strSQL;8 k; b) O9 k: J
" J; q/ c: K& b0 q- strSQL="select * from "+table_name;
& s2 N% C0 j2 I1 x
0 D" ~; T% x2 r* C% a0 `- ShowInformation(strSQL);# S; d/ N9 q. P6 v' h
/ c* e$ S- @$ T4 s1 ?1 ]) d X- }& @8 q" P4 g* t6 F) A
4 x: o1 y* g' i2 e-
# f2 v( ^: X' s" j9 r* ?/ h) N0 I
3 x; j. U. E" ]# K3 f* E8 p- BOOL CDatabase_main::ShowInformation(CString strSQL)
7 O4 p v/ A9 Y( } - 3 ]! D0 P# X- G- z+ n
- {: q+ w# C4 Q, k' }
@& d. g/ B6 h+ @" f- if(!m_pdatabase->IsOpen()) return FALSE;8 z8 C* _! A/ f z/ q* Q9 J" [* [: ?6 b
: ^. j" }, ~/ H/ ]- if(!m_pset) return FALSE;
g' [ Y' ?; {1 @' Q q) w
3 S. T' m |, M3 S1 C0 E1 {- try{( A: n; M6 q! L/ y, Y3 p
/ E- h8 s# l5 P# e# w# Y& T- BeginWaitCursor();
. g3 Q& I0 J7 `+ U - ' d5 X) V( ~( W! b9 {5 X2 \
- if(m_pset->IsOpen()) m_pset->Close();4 X6 k* N( \8 N. D3 q
- : [ H( |+ |0 O
- m_pset->Open(CRecordset::dynaset,strSQL);0 _* `* O9 E9 c& J; x$ R/ a
- . h0 s2 s5 ?) E0 o
- if(!m_pset->IsEOF()): r! T' I, |" K7 r2 w% `2 }
2 ]- M# ?# i7 _( X- {m_pset->MoveLast();- h8 O! x3 f' P" q
- 0 X# G+ ^. u9 _; Z
- m_pset->MoveFirst();}
, \5 i/ j9 V2 ` L
- y/ f# W U) O# j1 C" |8 o/ v- nFieldCount=m_pset->GetODBCFieldCount();1 {, P$ ?: d1 F5 O- u; z7 J) {- G/ u
- 9 _; V/ w% J9 ] t$ a
- CODBCFieldInfo fieldinfo;% g( ~! V m7 @* H
- ( t# |/ y( ?9 a' k2 i7 p" [
- for(int n=0;n<nFieldCount;n++){
: [9 Q; [& {3 _0 m* u9 [ - F+ t C2 j) y. C' A; P
- m_pset->GetODBCFieldInfo(n,fieldinfo);
! x4 L, k/ T4 G, I, X. j8 h1 L
* T6 a3 \. i1 z6 a7 X) e$ ?- int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
' r. @$ [2 V% |1 e - 9 i! }0 [+ C# i" Z, d9 A+ V
- m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);% o1 t3 r9 w& t; X: y* _
- ) E' q$ ?* L- I. {
- }5 |0 {: t) [0 l) Y; I
- 4 e; G# v: {- U
- CString strValue;
9 l) g. [1 o$ l: I% L
' L! o' n' ?' g( M8 m- m_pset->MoveFirst();6 p9 k+ Z& b+ k# ]$ E/ F, b7 u
- 8 U+ s) u1 ?9 r" J' h) e
- int nCount=0;
6 D2 ]1 ?" m/ H6 A% @4 J - 9 w+ t4 ^* y6 i' j0 y! k: T; r
- while(!m_pset->IsEOF()){/ I' f" t( o, D5 A( @
0 w& ?7 X Q- y( }3 H- h- B- J2 Q- m_list_control.InsertItem(nCount,strValue);$ R1 x; H3 p" \2 C9 C
- 1 Y1 L2 Q( B2 F( n
- for(int j=0;j<nFieldCount;j++){$ M, l0 o" ^+ T- ]
- ; a0 p& s, d1 b1 i/ `3 A
- m_pset->GetFieldValue(j,strValue);; f: X* s9 v- G. I+ M& M. r' z7 I' H
b% ]8 Z. R2 H; }- Q2 ]; r- m_list_control.SetItemText(nCount,j,strValue);
, N4 x: q) P- c, X- ? - 7 F8 p' _% C, C$ p6 K9 \. z0 n {
- }8 g9 q% x- Z, ?7 b! }! v/ K
- . [" W6 @* N% ]9 g/ N& P2 y
- m_pset->MoveNext();. v- L0 K1 C" {8 G
- - ^% Y; ~1 k( p W2 [& z/ O; z
- nCount++;1 K" x' {3 m( J1 o+ a T7 q
1 G% b s6 i; Z8 D) c: @6 |. s- }& q+ {0 r1 z! s
9 v" x" q" y7 [, h. I- EndWaitCursor();
1 s" s0 o) x; {
& }7 M1 f0 @( C5 e3 v4 i2 I- }
5 w' S7 c: c. ?" p) F; F* G - 2 Q$ m# [5 k- Q1 F
- catch(CDBException *e){& X6 Q1 o$ Z* w; U$ {1 B
- ' w! o1 R& {, y* l: f4 t- ^
- e->Delete();: H! V8 P6 \8 G) z: W6 i
& `6 x; t! P( y$ F- EndWaitCursor();
/ q2 K5 Y% I0 i$ W2 x9 d% k
+ n& e" K/ g3 y- w# p1 F: h- w7 a- return FALSE;5 C! G/ B `5 u. l0 ^
' Z: g/ D) T( A7 t$ s- }; `. F* ]4 V) e8 |3 F9 D
$ {( S0 E8 s' [) I( C4 _- return TRUE;& c! z5 `1 t+ M* K; k
- & ~; L V3 d+ |* N x" [% D- P
- }
' ^% _$ W2 Y6 a1 J1 ?
: J( @; E! W4 N- : N p9 k( ~5 P8 `
; Z6 {& K4 V/ A* v0 y s- void CDatabase_main::OnDestroy()( T/ E0 e1 Z8 c% ^& Z$ Z/ e9 v& p
- ! E- V+ N( t; v* l6 ]
- {& @# m. O5 t2 [7 f# J- Q1 f
N$ _( k" A2 w! {1 ?- CDialog::OnDestroy();- t8 F: T- A1 e0 S! J* P4 j
! l w5 m2 [2 i3 O' q3 C-
4 c' B0 c$ z6 U8 k, z b/ _ - 5 q W2 }- g9 y: K' e- ?. D+ C" q
- // TODO: Add your message handler code here
, r& V9 h1 p2 l4 L - & S. v. X! u: f4 V7 T. Z! A" {* \
- delete m_pset;
& d0 f* ~. p5 @: Z& ~ - 7 N8 u& R' w# l: \7 p4 L- b' P( }
- delete m_pdatabase;
" S+ [4 A, M* E9 s$ P3 u& Z - ' Y$ Y2 r5 K! S# M, g4 W0 K6 Z, L: o
- }- \% l: i; v [4 a4 t) M' s0 \7 t2 O
- d. P& T' v0 Y2 F1 m2 D. [
-
\# T+ @6 `$ a4 r6 t' W4 d- T
3 T2 D) ` u7 S. H9 i# b9 i- extern CString str[6];
& t3 ]% m; n+ r4 j% ?$ r
# J. N& w+ z9 f1 e8 M- void CDatabase_main::OnOK()8 S* f) \: u/ h2 U0 ~+ m8 R7 U" h3 K+ Y
& K/ p, i- r! x- {
, q, B. s+ k1 R7 ]) x# I! }
5 n2 l5 ^7 j. y$ J0 W3 u. t- // TODO: Add extra validation here8 _/ G8 w, L- U' L4 S _
. N. B0 v" l. e2 C: I- UINT uSelectedCount=m_list_control.GetSelectedCount();
7 G; Q: j8 c: p1 O& u
" c: r, d& y+ G3 n1 ?9 o8 w- if(uSelectedCount>1||uSelectedCount==0)% C& }8 O/ c' _" v' P6 l- o9 [. b
- : A& y4 n* I5 g4 e$ u
- {
: `) H4 Q7 Y! t! e3 C0 x
+ n+ T' ^. i& g. ~ ]$ j3 u" v- if(uSelectedCount==0)0 I; ?* w' p0 M( M
- 9 x& }+ d. S W
- {8 h* h3 x8 Y" g7 v0 |" {
- - g7 x3 n+ y0 O3 Z2 G5 J9 [7 x* z
- MessageBox("要选择一条参数!","提示",MB_ICONWARNING+MB_OK);, b+ Y# r6 y: {
; S# r4 m, { R H- B" m- return;6 j" s( X: E. Z. K
- 1 f) v1 [* I) A3 C6 S
- }5 O, K2 ]! \0 x r
- 1 P; O, {6 \6 u6 |/ V7 I' ~) o
- if(uSelectedCount>1)% Z! r. Y: G, x, |# m! ^
0 B- x2 C- Z! i4 P7 D1 T* Z- {
- f+ [, |. @! ` M: X4 k
$ g' F# E0 Y; t5 o! k, y4 \) @- MessageBox("只能选择一条参数!","提示",MB_ICONWARNING+MB_OK);
5 R# s# @3 _5 P1 w' u, ~/ i$ _) c
& H3 l- w& q. `8 E" U8 J# D- return;
. p: ? A5 R* y q4 \2 c/ m& Q - % U i; }0 x: G) F! g
- }
S3 p v o2 f# {
* P: R& L" \. Z+ R% z: n; D+ X- }
2 [7 t5 B& G3 O7 S9 y3 h" X6 t! A - % W* E# T X& W' ?
- else
, k; D* H* l) n$ `% J- p1 n
$ w; T- \9 F+ T! C( |3 w, o! f- {
3 f9 m- n- z: x$ U - ; K: i% e# g1 Z
- int nItemSel=0;
" u6 T- \( J" F* F4 Z' @$ T7 I
+ J: i+ C3 w N: R7 ^6 S! }- nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
8 V4 ]0 h" D5 O E6 D8 G
1 l/ i8 \2 C1 [0 Y9 ~- for(int j=0;j<nFieldCount;j++)6 j7 F( a; c- n# y. ?
6 J B8 Y) ?! i# t: M2 s3 x% ]- str[j]=m_list_control.GetItemText(nItemSel,j);( E' ^, h' `. s% h+ k
- & i+ a" `8 M% l
- }6 S8 l2 }) Q% U( r8 e
- 8 {" Z$ i A7 [7 V" d% n; Q4 m
- CDialog::OnOK();4 R/ z3 u9 f& r8 ~
- . l0 A( X" T/ }$ y8 C/ _) ~4 G" E
- }0 R6 U; e* v1 f. F$ U8 F3 \7 M j, h
# u- {6 X6 a. U6 x+ f-
6 U3 }8 ?& z( S2 V9 k9 I: X
' z, ~7 I5 r6 R5 G-
; a! a3 _5 F; ~/ q$ C/ V - + d* Z( U% I2 G. d6 A$ _
-
6 [ N, r1 y* p/ f - 4 [/ u0 {9 X8 D" U( {- L5 z
- 花键轴数据库的连接程序app.cpp0 M, n# Y$ A9 u w) u9 Z
- 5 {) L, p8 g4 y. {% a# I
-
8 U9 X3 J2 q& k8 A" s+ C* D
( z7 E0 K H( ]5 o- #include <stdio.h>
1 v/ P, R8 x1 Z/ `' R( l
/ t( h4 a9 Z: @5 n g- #include <uf.h>
* s2 x' w, q. `4 j+ H
; S. H" f7 t9 L; V# s- #include <uf_defs.h>
& s; w ~1 m/ k {' J2 L2 Z3 _( P
3 f. f0 x4 \0 V" n* e+ K- #include <uf_exit.h>% f! j4 q m% w
) I0 V: ~' Y9 h3 I- #include <uf_ui.h>! ^/ K0 g- j* _+ \
# Q* G0 c# }* e% x- #include <uf_styler.h>) m0 Q5 S& n* H- Q3 @4 Z* s
- V9 W5 B' e8 O& h- #include <uf_mb.h>
/ X2 h% U# B- p4 m* r# C
" z1 T! S( u6 W$ ?5 B1 O% i- #include <stdlib.h>9 ^. v) b2 m' P9 E
- + P! l3 S3 [5 J% H) ~
- #include <uf_modl_expressions.h>/ O5 i7 l9 R1 R, |2 z% _4 e
- % ~+ d) M- C2 R+ d
- #include <uf_part.h>
- h( v" X- X" W, ] - # P' }$ J+ O; }8 g. D1 G
- #include <uf_modl.h>& M/ @) A7 v( P
- 3 J: |) z: m5 L! o
- #include <uf_assem.h>
5 t1 B* |. b1 ?$ ]. I - * z" M& D& o7 s. f' y
- #include <math.h>/ M8 U6 t; T, f u W
! ^ Q% ^$ p# R* |: I- B- #include "app.h"- [, A2 s: u; \5 [8 A3 H
. q; N& O" x$ X4 [- /* The following definition defines the number of callback entries */& S0 O, @* X7 D) m: C
- ) K+ F2 e+ p8 |) B6 k& f& K
- /* in the callback structure: */
' M2 |3 c) N5 V; j) K- X - 4 w, ?( n- M* D0 G; ]. r9 Z
- /* UF_STYLER_callback_info_t APP_cbs */; B% l' U+ p8 C, T) p. T r+ [
- 8 m% z! `, b9 S5 c: D
- #define APP_CB_COUNT ( 6 + 1 ) /* Add 1 for the terminator */$ I: [. F5 ]9 ~6 T& `
' ^: j! D! F p, F, l- extern "C" DllExport bool para_database_func(void *str_mid);
+ D4 U8 f& t; \& J3 j1 h
& `1 {, M. |1 @9 e2 A- UF_STYLER_item_value_type_t data[7];% O/ N) o& S! o% Y5 U
. J5 w3 \& p" M7 j3 Q' j" [7 r$ I- static UF_STYLER_callback_info_t APP_cbs[APP_CB_COUNT] =6 x" Z& M. E+ Y) O- k
( [6 Z* Z- {; J- O% [- {2 {, G* U" a) n' D4 H
- % a6 g. N+ B i" {0 x3 P
- {UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB , 0, APP_constructor_cb},
3 z7 g, o2 e( P8 V! u
7 U u3 @4 e9 ~2 v% U( p9 G5 I- {UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB , 0, APP_destructor_cb},
* o& u6 h! ~# V* E1 n) B6 H - & X; z* N3 ?8 E% O, P; o
- {UF_STYLER_DIALOG_INDEX, UF_STYLER_OK_CB , 0, APP_ok_cb},
. i1 N& `! V, T2 |$ p9 y - 5 w, c8 @3 U- W# g2 A
- {UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB , 0, APP_apply_cb}," Q9 `$ A! q6 T0 R
; t/ q1 j" C' D4 k! m* o7 q- {UF_STYLER_DIALOG_INDEX, UF_STYLER_CANCEL_CB , 0, APP_cancel_cb},% S8 p0 P7 S1 J6 ]% E( J
2 g2 E: j! e7 x- C- {APP_ACTION_DATA , UF_STYLER_ACTIVATE_CB , 0, APP_action_database},4 ?! O" q, p c* n; f- n6 p- S# v
2 T. n9 i& u+ `+ U. x- {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 }
' I7 Z9 X2 P8 e
5 Y- u: v; B" Q2 Q: }- };$ {/ ]2 X7 a& V$ h) B$ o' \
. w' c0 q; v$ L. g, {# U- , V& I: k5 o: }3 r
- 6 W% K7 I, u; b. e @7 @) ^. |: u6 A
- static UF_MB_styler_actions_t actions[] = {
* k+ ?8 z, K/ s! F) Q/ ?
* u1 b6 a% \* ]- { "app.dlg", NULL, APP_cbs, UF_MB_STYLER_IS_NOT_TOP },
& w& a' @0 d+ N8 E \# r+ m
' g/ Y4 I' \5 Z7 n6 G* M# H- { NULL, NULL, NULL, 0 } /* This is a NULL terminated list */7 S. z: g1 [, V" }" C* h' f3 p
- W2 q8 _! m! F5 p$ q3 h. U+ L
- };6 F) m6 w# y% z( `; J
- 8 R$ B" {) F7 O1 W- g/ U
- //#ifdef MENUBAR_COMMENTED_OUT$ Y2 Y" y8 I% o: [2 S( @% i
- 4 M+ c$ r2 y% C2 _0 {( V) n
- extern void ufsta (char *param, int *retcode, int rlen)0 K/ U$ A% }4 |3 E
- - p( z% {8 q# ?& [
- {
* y& k# a# F' `0 m8 | - 1 p6 m, g# h8 I% _: j$ B7 r
- int error_code;5 @! ?. S- l( U- x0 Z; E) ~
% Y' a m5 k) s* g! w0 A: R- % E+ v3 l8 Y5 V+ Q
- # y* a R% n3 C6 q1 @+ y
- if ( (UF_initialize()) != 0)
& }4 Q+ U7 g# J - ! J7 M& e* g$ k& [6 E1 c# o) [, x
- return;
6 k- ?1 b6 A; v$ A, s - . F S% V, {9 q7 h- Q% K( z6 O
-
7 V3 V( v1 [% X7 {% d - ) P4 P) l* E H: m
- if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 )4 w: ]/ N. t" j# l" K8 i5 {
) O1 B* l3 Y( |$ V3 c5 m0 w: q- {
7 ~, M" P* \& H( ?7 w! x( d- {- q
! B3 D. }& _9 M$ s8 b- char fail_message[133];/ ^' t' w/ g( Z. O& g( U: [7 m: ~4 f
+ M, A+ d7 m* m$ |0 L, N0 M-
1 J/ I; j* z5 v - ( u1 M6 H2 Y2 x. S
- UF_get_fail_message(error_code, fail_message);: Y0 N: G8 V" [& U
- ) k- g+ F& S. X8 ]- b
- printf ( "%s\n", fail_message );
! s; a' k7 ]* P, W9 d6 d; x0 X - 6 x& Q( {3 H# _* }. @
- }
; b! v0 Q4 [5 x) ~) `7 @3 h: \
0 G& a- E8 M) c& X& _. e/ {-
% { p& v# h2 |1 H7 Q3 o
! h" i% h* @; K) u+ m- UF_terminate(); : `- t% C! ?$ u$ [
- ( _2 B0 m$ a$ t c+ G1 u7 n
- return;
4 K$ [7 M( A k - - Y. E# Y0 x; o3 c# X! \. ^' ]
- }
, d# d0 N/ R. v8 L - : x: _" N9 U; n! J
- //#endif /*MENUBAR_COMMENTED_OUT*/
: z4 r4 O6 v' ]6 ~ - . w+ |3 B( x7 Z& s- d. J
- 1 t2 F. F5 \* n$ m
- - n$ z, }# c& t: L$ J
- #ifdef DISPLAY_FROM_CALLBACK! i6 ~- u- \, P# C# Y# }& F
- $ z M( ~* |0 d Q9 _5 p
- extern int <enter the name of your function> ( int *response )/ N! Q1 Y: a) S A
- ) G. x% D0 W1 v/ C0 A, d; {
- {2 E) ]! s% t# w# H! D
- ' [# {3 _3 H4 j5 P* G+ ~
- int error_code = 0;
# k% G4 u- P- D+ y* C% } - , o2 K, y+ t: w- c3 K: R* B8 |: ]
- 1 j/ r- v( \* G2 `
9 j2 G7 \6 z7 L6 |- if ( ( error_code = UF_initialize() ) != 0 )& ^& p2 F% P! f0 |7 T! b- {
4 w" [4 f% w, g! q- return (0) ;
/ W9 k& W7 }- X8 s; Q' A
* f) G( ]+ T1 C-
# X$ {8 g2 x0 G6 N) ^8 D1 H - + e# f; B. w! _9 {2 ^
- if ( ( error_code = UF_STYLER_create_dialog ( "app.dlg", d" p+ [& `' k3 s4 I! O9 p/ B* X
- 0 k* q, e# q, p0 n* Z0 c3 Z3 E
- APP_cbs, /* Callbacks from dialog */" t$ ~) {. y- D5 G8 O! ]/ j
3 K) H* i& B ~8 P- APP_CB_COUNT, /* number of callbacks*/( l; R3 ~! [ D' |8 U: B7 j, d
/ h& }( F; x2 R( }1 J2 @( Z9 x- NULL, /* This is your client data */( |0 Q' i& m S6 G0 W2 L
1 r p4 U: C r- response ) ) != 0 )1 P. ]% M/ `" o8 S3 t: _
- : q* g% I* `1 a& _5 }
- {) |' a$ k6 y# U, L
+ g8 @" }2 t8 e0 _9 r$ n- char fail_message[133];/ n' A, U, Y% Y! n
8 T, Q' P: s2 r8 |" k0 s- $ F& t4 \) g1 ?; F1 p" d- w3 [
4 M+ B2 K# g% ^- /* Get the user function fail message based on the fail code.*// y- B0 u3 e$ ~' d$ T6 R
- 6 t' Z, d$ d8 s% V% r
- UF_get_fail_message(error_code, fail_message);. h3 b! g) j! |4 i/ L
- ! d! L4 U- x# I% u1 I. S8 Q/ b
- UF_UI_set_status (fail_message);
2 r2 [' x/ \7 \9 [1 S' D% a) K - 7 ~) P. @0 p& W5 ~7 j
- printf ( "%s\n", fail_message );
" @; X4 G7 z( q: ?1 h# j7 Z7 l - 6 R6 d) E* t, C! E3 H- T
- }0 E3 v2 r& B0 t6 b+ r
( d* N7 m y5 l! t. ~1 `-
7 j/ E) l( h0 Z9 A8 C5 s3 g( s# L
, ]9 m- d% e3 _9 P- * F8 r' n- ^3 k# o S6 i, ^
- & C* i' J! n( s4 x x9 b
- UF_terminate(); 0 u d% h8 @8 S) S
$ {& `6 C6 r# w( x- return (error_code);
3 @, r" _& J2 x/ s( J8 `, d - . G5 l" C m. [5 X1 J( s3 U
- }
3 s& D0 u# p, l - ) K) s3 ^' D, b! }# a; |, c6 V0 P
- #endif /* DISPLAY_FROM_CALLBACK */
4 c. J' D8 O4 U" q- r& }
$ \# P/ @+ C" x: S" ~1 g- #ifdef DISPLAY_FROM_USER_EXIT
+ i! c% W5 l, H r3 r# C) E. @' D
+ r: l3 Y- z; M' ^2 i# _- l- ^- extern void <enter a valid user exit here> (char *param, int *retcode, int rlen)* ` H% z* \4 h' ], }$ U
- 3 n# l- \- G7 ]$ J& ?
- {- H: K+ r5 N H
a( E) B. o; V0 P- int response = 0;
. \! }4 @ {5 ^2 F3 f - ) W6 h/ n# E, J6 `7 j8 V6 Y: B
- int error_code = 0;
" Q+ g. a2 c& @# m) ]1 v
, |. `: t0 L1 V7 u6 @-
3 m& `, \- m/ M% }' m% Z - # ?; v: a. U: U5 O9 Y: |
- if ( ( UF_initialize() ) != 0 )
: u! w7 `# e7 ]5 V! ^( @: b- b+ j: c - @% B& @7 q2 @. N$ B5 L3 u0 N
- return;# m! H+ r) i& [# ]' B2 y
! F z8 Q: ]& y2 ^, U: q$ Z F4 j-
* Z* q2 [6 j. Q- h! F; _
+ O- q# Y6 X1 U4 t5 I$ s- if ( ( error_code = UF_STYLER_create_dialog ( "app.dlg",6 f# N0 L/ ~4 M& t! p) a3 A7 w
0 g* L) G$ K2 i+ W- APP_cbs, /* Callbacks from dialog */. l6 A! S" x; G# X. w4 t9 e
- e) A8 Y1 U H" `( p) s; h: K. H
- APP_CB_COUNT, /* number of callbacks*/
# r' a* A0 f% K
2 I% E* O3 S9 M) n; c! U- NULL, /* This is your client data */
9 H1 R& V* ^- l! l
" D+ l, f5 D3 o4 g- C: ^- &response ) ) != 0 )8 F8 h _1 `: l, j* Z" b7 v5 K4 C
- ; M$ y/ H! Q7 g9 W$ m
- {% D, d! e& v: e
- U% T! w+ V: V! r, s# t4 z/ d- char fail_message[133];
/ c" b% {# D4 i- K+ @& @( Q( R$ p
$ p% m L, g' {. |- ~1 |1 K) K1 z5 q/ v3 F
" O9 n' R+ ^# c! O$ q# \- /* Get the user function fail message based on the fail code.*/
# u0 n- l& T9 q8 v8 o Q% i3 z2 f a - 7 H* v; z- w# T6 }/ b% B) s3 s
- UF_get_fail_message(error_code, fail_message);
- Q7 z) Y) J, x) N - ) K6 B6 k6 _& C
- UF_UI_set_status (fail_message);/ g# k& |$ C/ {3 J
- ! K3 f) U: V/ H
- printf ( "%s\n", fail_message );
6 g; [4 f' ?3 I, S2 b
9 D8 U9 D) F# I% [- }
6 R; j4 H1 {7 v - * k7 Z$ s% T; I( k6 n* U
-
# w9 X8 E# x3 s! [5 u% D# s I - 5 Y/ G5 w0 A v0 [' v& ~
- ( ]' h& {! J! @6 X; g* s/ A6 C
- ; O- N4 @6 R g' M( I- R; Q
- UF_terminate();
' B0 K! w( N+ R6 Z9 [
5 k% h& E( a1 O+ K; \& q3 g- return;+ h4 z V, e8 Y \
3 z/ C- m2 t5 b) a. [( ?- }
9 X9 j1 E) Y& {4 P
: s/ C8 `# F& r- " j& O5 L( S1 M! ]4 U/ S; D
8 g! y" C/ H# m7 w" T6 h- extern int ufusr_ask_unload (void)
# i) f3 {2 Q, l( l& E
/ S2 x- O- v- u' J* X+ N- {( ?+ W" o6 E- \8 v4 |3 l% p
- 0 z! W: _2 A: m2 g7 k7 g
- /* unload immediately after application exits*/# @; t; E8 S/ x
2 W* T# r9 Y; i4 T. Z; F; [- return ( UF_UNLOAD_IMMEDIATELY );8 p- e2 G9 X" c2 b
- Y: ~2 G: ^) Z
- ; R" U5 ~# C- g" r% s
, v8 Z) \" X. g4 D& @- /*via the unload selection dialog... */: f0 H! W7 m" _3 Q
4 U9 v, e% E5 m1 n9 H9 h- /*return ( UF_UNLOAD_SEL_DIALOG ); */- }5 s) U) G+ M, p
9 S$ l' @ M' r s7 K" a- /*when UG terminates... */( x! C1 a7 x- X7 d' C; P$ A
7 j5 T: t$ {! p) l. n% r- /*return ( UF_UNLOAD_UG_TERMINATE ); */0 C3 ?$ L5 `) H1 A4 f# ]
- : \- _9 n$ o& B1 I
- }$ j# [8 G7 y( M, d1 P" [
# j% k8 _3 v; U' z n/ p7 O- extern void ufusr_cleanup (void)
# ~6 t- u3 P6 @9 X! _ - * E; g P4 Z6 [1 V# }$ X+ H, i
- {" h+ @. K& `* X3 Z. e5 g: L
- 0 _9 f5 S# o- P; L- G7 ~8 |
- return;3 b! T( J v1 h2 E# B0 G. _) o
- 9 r6 F% X* |( d, T5 U5 k+ f% W0 D5 ^
- }
; P* H! e1 y( G" C. {$ t4 N
- x5 i$ D4 `& `7 p* O% @- #endif /* DISPLAY_FROM_USER_EXIT */
) P( H4 `+ l; e
* F, I9 c' h% \: _7 k4 i: P- ~- int APP_constructor_cb ( int dialog_id," S, u7 z6 S$ n% C# K7 @( X0 {
0 E: a9 R+ O7 ?7 Q- void * client_data,
: m( Z( S! a ^
' E7 |% b6 ~! [/ t" Y- UF_STYLER_item_value_type_p_t callback_data)2 N# A, `/ G; V/ @1 e
; ]- R3 b6 \5 J* ^0 x- {
0 Y# o' t! f Q7 C
6 T: h# C3 R5 ], ]- if ( UF_initialize() != 0)
. b$ g% i9 f( K* v3 S6 p- ?+ A
1 p0 Z# C( H! @- return ( UF_UI_CB_CONTINUE_DIALOG );' i1 @# F: o2 ~! ~+ E* I
0 ]7 o. `8 \/ B3 L- ) l k) I! N- K( X. N: Q
- 9 }1 Y/ p% D6 O
-
2 ~ B' T( n" _, P- \ - 8 O. H* h' E, a5 I) S9 B& T5 K
- UF_terminate ();) s5 ~+ [* P. n) Y! F* e: y! {0 O
: @/ J x) D) d-
9 w. G! v1 M+ e" Q, f8 a - q* }% r3 t' d: i7 z0 A P
- /* Callback acknowledged, do not terminate dialog */+ ?! _$ O# t7 S ~8 @
- ; o* u$ t, \9 V6 z
- return (UF_UI_CB_CONTINUE_DIALOG);
0 U! _0 h, U* `/ T
& R6 Y- g) e4 }; v6 e- /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */
! {* @ j& \/ p* k9 D' ]& g2 | - : v2 G8 L+ H, I9 Y' Q3 `0 c o5 \
- /* for this callback type. You must continue dialog construction.*/
$ A9 O4 N, j8 }& Q" S7 b
L* y( N1 {# H8 a( [, | o1 {3 G! w- ( A7 D0 J+ ` F4 V, I+ {: `0 X& E
( b9 i6 M. Q( ?6 v5 h; N( U( J- }
7 y: T- j& P% o$ {3 ~% I - - n' S# A1 t. e
- 5 M* u- P! X$ ~2 L k
+ @* M7 A. W) e8 s' R# ^- ) I# X( a6 N" U7 v% k
2 i6 J/ l3 ]0 f' I9 y5 H( B( f- /*3 ^ R- n p' Q' j8 I* N
* i* V/ O/ d3 w$ y' p6 G/ e. O3 C- int APP_destructor_cb ( int dialog_id,4 E/ B* t- \# `. N+ U7 g
- 3 w3 L" \5 T2 s) c4 L3 h0 W
- void * client_data,
3 s6 g: O7 }0 r" K9 K5 o0 p
9 U& D9 u* @2 V) M I- UF_STYLER_item_value_type_p_t callback_data)
, j1 k2 K% R. l7 d
& J, @' l+ L8 N+ z# G- {
2 t) |7 k6 q' i
8 m( a& c4 r, E7 v7 [- /* Make sure User Function is available. */
$ d' e$ _. D. N2 e Y - : @! O" }, {$ N7 x
- if ( UF_initialize() != 0)2 K, X% Z0 I' I# n
6 n Q1 [8 V& v3 ^- f- return ( UF_UI_CB_CONTINUE_DIALOG );
3 Y" f: A2 }0 p' Z2 x3 P! Q
2 N) f. x& v5 P# K/ E- d' X M. Y( ?* g
- - \7 b, A9 B9 M7 t( u7 |7 X/ u l7 w
- /* ---- Enter your callback code here ----- */
' l6 b6 r A$ y7 m3 E, _" M- G - 3 { E/ T" ? z/ t7 l( v$ }( a" i
- # O2 e/ R$ _, t; G1 h9 V" S- [
8 A8 Z: i/ R) `7 d- UF_terminate ();1 r$ B! C# K* Z9 ^0 F9 r6 N! y: m$ A
- 4 ?( w0 E1 ], z T4 i1 \7 \: R
-
$ q/ ]. J% j E - k* k, o6 z' {: _& Z% t
- /* Callback acknowledged, do not terminate dialog. */# _5 I e4 P% M0 i- S) J( u
- # n' b; s$ _7 S" L, F
- /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */
- a' y( M4 H; F
0 \( |, l1 t# i" y4 S- /* for this callback type. You must continue dialog destruction*/! u6 J/ f/ p$ V! |* i
9 i' k* Y0 G4 L3 F# S- return (UF_UI_CB_CONTINUE_DIALOG);( M7 M4 e9 E0 C) ^% V5 _3 }
- 4 n; _/ l5 b, {8 p8 a, N6 x; ~
- 3 S4 w6 V% i5 ~
- ! D, ]. p h# O" n7 E
- }" A; L# b/ F& ]) N* c- Q
2 n% g6 _# D# p- k- - F) V8 H! G& x9 ?3 ]% g$ a6 X6 V
- ' J1 \' U5 }0 Y' o$ m2 {% h- V
- % C7 N6 f& ~' L" w2 R" S. u1 L+ z
6 b" L' K4 S% d# X" L- int APP_ok_cb ( int dialog_id,
( }3 }0 f# ~6 T( S- y/ ? - & [* E, d- M( K6 t, `
- void * client_data,) P4 g% C5 d2 @5 L1 ~
- * |; d2 _3 f# y) D. b
- UF_STYLER_item_value_type_p_t callback_data)
( h) D! Z: U! k7 \9 i/ s
* P! N2 y+ M8 M/ b: l, M% s8 C- {
7 ^& }7 H- j" |# p- f - 1 @5 S5 J. y F" v ?
- /* Make sure User Function is available. */
% t, ?, x- f2 ~; `0 @% f
( ]# O+ \7 k( |! C, v6 O( x" j- if ( UF_initialize() != 0)0 D& }- ?& j* ?& B6 a% w6 |
- , h; Z' v4 m! D
- return ( UF_UI_CB_CONTINUE_DIALOG );
6 |7 |' I/ E, N# r& m4 p - ; S3 _7 E! {, R& J: |+ Q' P1 A" ?
-
6 P% M. k# |3 [9 D( P/ ]
; I$ \, c" |5 e# a$ h: t8 x/ O& L- /* ---- Enter your callback code here ----- */) Z6 T2 Z7 |! R( n4 s& d$ S
- : V# E3 ^0 {. r5 k. _+ |2 [
- 7 |6 U! r3 d. a6 S: H9 R+ d
: ?7 p. {1 a3 d- int i;! |7 G6 {# T; _, f1 Z. v) E- ^/ H
3 [, ^9 M; m+ s' u- j& ]4 C* F- write_para(dialog_id);: W- w0 v( S6 }8 c0 Z( s
$ R. h6 g0 u- N- const char env[255]="UGII_USER_DIR";# L% k2 v$ m- l3 a
$ A: }( r* j0 l0 N- char *basedir=NULL;" Q9 @+ K; e( T2 X; R
- % \' o2 E' ~( S8 n! s0 Y1 K. I
- basedir=getenv(env);
- j1 G. j+ i* f, Z; { - & I& M+ B. r' N" j
- 0 h7 A" x7 h! T' [
' I+ E" \* s. g4 S J1 e* g3 i. s- char dir[100];- V% W$ ~3 S) K7 n1 c. v
- T% {" @9 U- D J* m# x
- strcpy(dir,basedir);
6 w; \( d2 O! h- b$ @, r - , e) x7 G7 I& d. u' s; i$ e
- strcat(dir,"\\grip\\huajianzhou.grx");
/ Y1 V' M3 i. t) f; A3 w. N' | T
z) u3 @, C' N ?+ I7 Z* v& j- * W# a# H' h2 Y- N8 D8 O$ \
5 R* ]- T* J4 r. _& |, J2 {- char *grip_exe=dir;
! j# ?3 a" O" f& Z
( w5 B+ o8 w+ ~' V- int status;
2 }, @: v- ]5 L) O- x
6 C3 a3 p/ G$ W0 F0 f7 S: M- int grip_arg_count=7; //参数个数
, Y% u" E5 @) x9 j& v. q% D
- H! S. J8 \4 P. A$ D) b8 ?% x0 A- UF_args_t grip_arg_list[7];
: a! g3 M6 h4 u7 e O
8 j& `, E# ]# y! O' [9 I) `. R-
: U# K( }; D: Y6 R- |
. ^5 B5 A7 S" h) z+ c% `- grip_arg_list[0].type=UF_TYPE_DOUBLE;9 y+ N: }$ w- h+ u4 J" ]6 ~1 D
- 0 D+ m1 p/ b9 I/ o" d
- grip_arg_list[0].length=0;7 m1 z: |! p* W: S& [* d+ Y' r5 T
- ) p& ?# _7 z' k) l
- double fdat=data[0].value.integer;' ]+ v" {7 T7 F
# C9 h* e3 _5 X3 o7 f- grip_arg_list[0].address=&fdat;/ Q) A J' J) e" s6 ^
- 7 y0 X/ z/ w2 l5 ] ^) [
- + m g8 E4 y) a9 `* C
- Q) e2 f3 p$ b8 y6 _* { v! X# U2 R0 ]
- . c3 b4 b0 K+ t7 C3 p- o6 A; h
- 2 ]. P* C4 z4 l9 P8 U1 s
- for(i=1;i<7;i++)
! W" C( ]& u) k6 z5 o$ N3 G - 6 b" X7 x9 I( c/ N! P& w
- {
$ z4 D5 B' k/ r( O; F$ l) z' |. s - . T" Q" a# D ]$ \+ a5 D8 V
- grip_arg_list[i].type=UF_TYPE_DOUBLE;3 R8 h5 b) B: @( j; ^
- $ m- r5 X1 S9 a$ W
- grip_arg_list[i].length=0;
$ F2 l1 s# t+ P$ f, m - ; ?# c3 F( C9 i, x3 I0 b6 p
- grip_arg_list[i].address=&data[i].value.real;, a) `$ E) X' @+ B
- $ ]/ B% J9 p1 J1 b! H8 m
- }
3 Y- Z' }$ g9 b/ V; v2 ~! ~ - . f* o! u0 G/ o$ D
- 9 q6 P6 m4 @9 r: `
3 j% b. O/ p) A; h, l* h- status=UF_call_grip(grip_exe,grip_arg_count,grip_arg_list);
( i& W3 G3 ^% v: {5 g - ; C2 t* ]8 t$ H2 ~
- 4 s! F: E3 N5 w
5 H6 g! a+ T5 t$ I% K1 t# t- UF_terminate ();+ t; R- g& w, d! t5 L5 X% k( c
- ) K$ @! T# U3 _ \) j2 Z
-
3 r# _3 r8 C+ c- \) E) P* D - , c) w b V; ~$ Y8 I4 Q$ M/ u2 C: ]
- /* Callback acknowledged, terminate dialog */% `4 B' q! D4 g* @% o
+ l- I4 e; T+ w) `9 d- z5 l- /* It is STRONGLY recommended that you exit your */4 k4 g: |& x- z$ f6 f
# W& E' d5 {$ |6 O$ g [- /* callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/
0 B, R5 [. [0 G) Y" y" ~8 T/ B5 y - ) i) |2 H' s, [- V8 j9 w5 m. m, N
- /* return ( UF_UI_CB_EXIT_DIALOG ); */
- e9 V2 o! t( H& ]7 x4 z
/ I- y/ J+ I0 |- {8 V- return (UF_UI_CB_EXIT_DIALOG);
8 y. ^- m9 p+ o+ Q
+ x0 `4 v6 \. D! P9 X-
; T0 p v! Z9 y5 h; D- L
" j5 I* L8 r' R) f- }
. ?8 ?2 Z1 p! o3 F( @. @( [4 i6 F6 j; S
. f" z! N: v* a( S. U- 6 a( [) e* }; ?3 D- @$ h
! s0 G$ Y! i( U( W- r& t- 1 N! Y q1 c* Y$ ~# b
- + o& B1 {$ U/ p @+ Q+ Y2 W: C% }0 |/ V
- int APP_apply_cb ( int dialog_id, M! n' t2 ?2 f" D3 E7 v7 D
- ' E' V5 C. P# v& |
- void * client_data,- _9 G8 h# x B" D* L6 ]) S% S$ T8 O
- " x. G/ G. x( {: S5 l
- UF_STYLER_item_value_type_p_t callback_data)
7 c2 l( g q; Q - : H2 `. o9 ~' K. R1 @7 @
- {( i, F9 {/ n8 j( G. _
2 s6 i$ H2 z9 T, c& I3 q- /* Make sure User Function is available. */ ) {2 j' Y( _* Q2 I5 U2 v7 n& O
6 l9 ^7 ^% D# C' k. n# p' U) r0 g- if ( UF_initialize() != 0)$ `6 U6 [" U4 h8 v6 t5 |
- ; ^8 h) i) W6 W0 Z( P
- return ( UF_UI_CB_CONTINUE_DIALOG );
' a: v3 e+ o! p0 T. J2 L3 g9 E% q) o - 4 y8 a5 R: c g9 Y
- ( e6 e; S8 T5 s6 }' j# S
3 `8 _9 f. o; U( i* w+ c" p- /* ---- Enter your callback code here ----- */4 z1 P) g" X M* O1 t
- + Q$ H* A! F6 [ v0 ]6 d- \
- int i;
" N, p" C5 Z. U/ {
6 r! `5 q3 }! t/ C3 ~- write_para(dialog_id);* U" |( |6 C- y' ~. @
- 9 {# V% z8 t: n; W- ~- G
- const char env[255]="UGII_USER_DIR";
M* V. w* I9 V5 z - . L- G1 B I+ Q$ n
- char *basedir=NULL;/ b$ k* y, q" p7 P, a6 D6 K
# x' i0 B! ]- F1 h) D- basedir=getenv(env);
( L; D# ^1 Y5 x! _2 Y& m# ]
0 w0 {2 X7 a' J- D3 N; r$ C* \% u- 9 w1 a$ r- P8 P$ m4 A9 o9 p8 [' _* }
- 1 t o% S7 ~7 m
- char dir[100];
- Y; Q2 b4 T# k9 g4 r8 q+ n
! y/ P/ }, z, q) ~" F5 X- strcpy(dir,basedir);
) J; ^1 \/ M6 k' s! p - # d/ ^5 M7 m$ `; j
- strcat(dir,"\\grip\\huajianzhou.grx");2 V% ?; H( G" ` h* b9 e$ l
- , }8 D1 C- A2 ^# s
-
9 X) c4 L3 y- o5 R/ m
! O$ g% s% U; o* }- char *grip_exe=dir;0 g. z8 V$ L8 I
- " ]7 T& V/ M A; p' C
- int status;1 z# g9 v$ {4 W/ o" ]( _# P! ?# O
- : U8 Z8 o. f% x4 b K( X) V5 G' y- _
- int grip_arg_count=7; //参数个数0 Q& z3 ^! L) F6 D" f% h
- 1 B1 o" S5 Z9 v" {2 E, j
- UF_args_t grip_arg_list[7];& x5 t! b5 t: L' Z+ F: Z
) Z9 z9 X9 H) m. ]- n- 8 q( Z. V! Y* ?# t& W
, w. a( F* E ]/ t6 S) J- grip_arg_list[0].type=UF_TYPE_DOUBLE;
* p/ @2 x) D* C9 q
* T' ]0 P3 `* i' Z- grip_arg_list[0].length=0;
6 d% f$ d9 w$ N) f - 1 ]5 c+ @1 T! a* p% _" j- O
- double fdat=data[0].value.integer;- ]* F3 t7 Q# E; W. F/ D. W
" A6 t. I5 m0 X8 I7 L8 A2 S- grip_arg_list[0].address=&fdat;. L" G! ~; X, X; n
/ }$ s! v' [- x% N# z) p/ C-
* R' Y, \: R2 f' P9 h - ) r" e8 X( h8 u, [: k9 }
- ; K: e5 a5 Z$ O
- \% O2 D! ]( u
- for(i=1;i<7;i++)6 V, |7 o. d; y
5 M( N! n* w, Q. c- T- {
+ V4 E7 J; y7 f( n
1 T- g/ P; j' v8 f3 s+ ?$ Z( u- grip_arg_list[i].type=UF_TYPE_DOUBLE;" K+ c+ A w1 s8 ]1 N( C
- * S9 O& E" }0 S$ K8 z1 [+ @
- grip_arg_list[i].length=0;3 t0 v) u. b R; c
- " ]8 a2 P/ g. R r# ~1 z+ f
- grip_arg_list[i].address=&data[i].value.real;5 a, k% @ X+ w) N
- 8 v- {5 ~8 h! D5 Q9 X* u+ i
- }
1 X5 N3 a; D: b. W5 x9 @
$ `$ H# J/ B9 ?3 U4 h; g- # x- m; } o3 N5 E% v+ C/ z
- 9 b6 u* z: I5 `0 M( f0 y$ g3 D
- status=UF_call_grip(grip_exe,grip_arg_count,grip_arg_list);* j4 r8 v( f# }# M
; l T9 F; i/ V+ B9 _-
+ q, `. S; i: j E% [: a' p - * p" h& v: C( }; c/ c
- UF_terminate ();: _/ N& J% c) m% S# H) p
b4 R( \; C6 z& M$ I- 0 t7 `2 ?. j# z4 d$ v/ W
2 D( a* M( u9 j- /* Callback acknowledged, do not terminate dialog */3 u8 C; M- B. f
! j4 z% ]6 s2 D% A9 T: c8 ~- /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */
% f5 ~+ P# a3 y3 y2 \4 X
# N! `/ t' d$ }& `- /* for this callback type. You must respond to your apply button.*/ R' y; V1 j- c v
- 1 m% P6 e& q* p+ g
- return (UF_UI_CB_CONTINUE_DIALOG);
. Y5 T' D( K4 _7 l% Y - ! Q: z' t: V& O1 T. N3 a, R/ Y
- 4 `+ ]; G, d7 J" @
3 i1 n8 ]) P" x5 V1 I- }7 U; v1 [7 g; y1 B' {" B
. W: S$ f X; S7 F2 L3 A( ^ O3 i- void write_para(int dialog_id)
8 V; {0 O: ^. S' r- a
) }+ ]! B( U/ z- x0 E3 @- {8 F. T' o2 n8 s" \! M- f
- ; {, `: r6 g; c; b
- data[0].item_attr=UF_STYLER_VALUE;# a+ B# j2 t3 p G3 D' D
- 6 r- g6 A1 p7 [3 K3 D! P* j Z
- data[0].item_id=APP_INT_N;
5 A7 e* Q6 S4 _, I& W
5 e8 f/ |* I' T- UF_STYLER_ask_value(dialog_id,&data[0]);1 k2 I" T; \( k( b
4 p1 L8 k$ B$ ?# s-
% g/ h3 {9 p; S - " {$ p: _, p" d* M# c
- data[1].item_attr=UF_STYLER_VALUE;& U g6 I& T( d% ]& o. P9 L8 D
4 |$ \( G/ [: s9 [" E* \: k- data[1].item_id=APP_REAL_D1;1 W% P, b& Q- O+ m: D
- & Z2 b% n$ O5 K# n0 w" Q
- UF_STYLER_ask_value(dialog_id,&data[1]);
" D+ `8 ~! [2 K _! p7 G+ t; s7 l
' V0 E5 {. [5 w; E! ~ |: f( r7 y- 6 U) C, w9 S; J( E
) g% q- g6 O6 k" P- ' l! \6 k4 B; g1 i- ~5 f# e* c
( e: o2 _% e0 m7 J, u- data[2].item_attr=UF_STYLER_VALUE;6 C( H9 X6 @- t8 c$ L4 H! V
- ) O% e0 ?4 k1 K2 B9 w6 ~. B4 d( U
- data[2].item_id=APP_REAL_D2;
3 r2 W1 c) ]. @5 c
& V: U9 ~; u' a+ M$ Q" @- UF_STYLER_ask_value(dialog_id,&data[2]);& _/ T1 @5 \5 ]0 B, Y% \* F8 A
- 8 Z% x6 f7 O- @( b
- 7 U& B2 R% J8 F5 X' s$ `$ K
- 4 V! Z- J( d" b0 D$ t
- data[3].item_attr=UF_STYLER_VALUE;7 B/ N" l: @: B s9 @
- ( u* w* M0 O; e) }+ W8 z
- data[3].item_id=APP_REAL_W;2 m% J% j( T& ?3 c o# @
- * s" U8 V- T& r3 x+ k; M, h4 x
- UF_STYLER_ask_value(dialog_id,&data[3]);% P2 |0 t7 T7 m; p, r: [
! u T: }% ~& C' }) |+ a9 d-
4 u. M. Z% W; j! S8 t; f - , u( w0 S2 }; F% e
- data[4].item_attr=UF_STYLER_VALUE;
0 w+ O/ N5 g. H1 Q. N - 6 s- i; J7 |+ Q$ W) M9 S
- data[4].item_id=APP_REAL_K;7 r* i! A) V4 ]6 P6 e! L$ J0 ^0 b3 S/ \
- ! p% J5 ~' b. M
- UF_STYLER_ask_value(dialog_id,&data[4]);
0 K, G/ a6 F( V! `3 M - ) q0 s( y# b4 H- R/ m2 v/ @
- data[5].item_attr=UF_STYLER_VALUE;
% Y& g5 ~ _" n" A7 P* E# G - 6 n; P, ^+ e1 J! |4 B, g1 X
- data[5].item_id=APP_REAL_L;4 Y( e3 i% B' E1 _0 t
* A, W7 F( M# S# ? w8 N. p6 i- UF_STYLER_ask_value(dialog_id,&data[5]);
1 o% [: C: I( L9 B
; X) e/ z( K+ W$ F& ?- 5 ]9 Z+ e9 F; h) [$ V# |
- % _8 G- I8 O3 y W& @
- data[6].item_attr=UF_STYLER_VALUE;
# ]) {" }; ?' t' M8 r
' q% X! R) x$ K3 H+ I- data[6].item_id=APP_REAL_LL;/ G% A, m8 h6 a( }
- % ~( m8 [5 P/ T( M& w: {) s+ F/ G
- UF_STYLER_ask_value(dialog_id,&data[6]);
1 i) z9 g) d0 P$ B
2 t# H4 [" Q* |: c7 J) ^3 e$ b% Q- } p/ P0 g' {( A" _$ w/ A
( O3 F! q+ O* n-
4 d7 j- a$ s3 W8 P! m t" _
; @9 S# p2 w! \4 a5 K6 @: V3 \- /*
4 Z% E* [! y! F3 B& |+ U; } z
+ G0 p3 ^( c3 A8 D- int APP_cancel_cb ( int dialog_id,0 Z& l; t" M( c# m$ x
- 6 E& o9 r* v% Y; ]/ q+ o" R7 K B3 x
- void * client_data,+ x+ s, a# x6 B" g+ b8 U$ z8 B
" ~8 L9 X2 \- a5 e- UF_STYLER_item_value_type_p_t callback_data)
& a( e% B1 w# F; v
/ X1 z3 S- {- c$ ^9 G- {
/ ~, L3 N& @7 ? V$ D
' p. j/ C9 B' C- /* Make sure User Function is available. */
0 \: d: g- P; L1 l/ o8 N
; Z, h Y5 e- H2 _7 }' r9 p- if ( UF_initialize() != 0)3 G2 y8 N9 J9 |2 K
& ^8 m+ V( P" K, k5 `- return ( UF_UI_CB_CONTINUE_DIALOG );
( q5 G% _8 y! K, W. Q
- q& y* ?# P5 A5 k3 w9 x- 9 q5 x8 u7 j( X! e2 q' f4 A
- N* |# U# P" n/ \1 Y& W% D- /* ---- Enter your callback code here ----- */
# t6 |1 N& k C. N - ( W9 ]& v) M+ B7 F& H
- - s$ a6 j; d; H# K/ u( [
- c1 x; `2 O9 ~8 P
- UF_terminate ();) f/ b" d9 W! K5 F$ Y
. ~% @# x. P# S6 O- " A3 X' q* V' D) N$ Q2 O/ Q- e$ @
- 6 @+ t- I. L( N* x% ]1 a
- /* Callback acknowledged, terminate dialog */$ A2 V( |" t& F- h
- / ~5 b2 c1 |& r; P5 E+ H4 P
- /* It is STRONGLY recommended that you exit your */! b$ y, x$ H; g* K( e
7 _2 E# H0 x0 N& y9 E% p1 w- /* callback with UF_UI_CB_EXIT_DIALOG in a cancel call */
2 J. F, z9 |9 x$ t% P - ) s* E1 M; `% Y9 a8 b$ q
- /* back rather than UF_UI_CB_CONTINUE_DIALOG. */
( z; M$ k4 \3 j9 s6 E0 U/ g - 2 P1 D+ k: Q. p5 s* P" |1 \
- return ( UF_UI_CB_EXIT_DIALOG ); u3 N% v; e" d$ L
( Z7 C9 j! |$ D6 g- 4 p* r/ Y4 @$ w
- % S# P" L4 R+ |8 s6 V$ A
- }" d* o1 u4 o0 M) L! i% J
, B7 j* d, [0 x2 C) d! k-
- c/ N1 O: W# m+ W - * _+ ^# L! J ]$ r3 T+ A
- 3 T( ~2 @" S' f1 M
7 p+ l; F5 k/ d3 J- /*
/ m% V4 q$ P& E+ o$ @
5 t9 f1 ? H& v# f, g$ s- void read_para_from_database(int dialog_id,void *str_mid)! P$ J4 b8 M% n, V" n
m I" B2 L; s- L6 a- Y! }) m- {
/ ~& [" D/ V: m6 n% F! L( L; T
( w; V3 j' O9 n4 J- /* Make sure User Function is available. */
* X0 n; W: w+ m% g
& g4 T/ u g0 R& z+ V% \! N. ]- /* ---- Enter your callback code here ----- */
% q, j( F: b% U- f. `: N; ]9 v - ( l1 T0 |% q0 \
- UF_STYLER_item_value_type_t data;
# S9 K, r4 d, Q( Y" R - 3 l( O: E3 @5 j n6 Y
- & C8 T" ?2 }, a; H( i' k
: |3 S1 ~5 P3 g8 t4 H2 ^- data.item_attr=UF_STYLER_VALUE;! R) _, i3 s. E* y, h( w2 y; H
- 3 m( M/ g- p+ G! |
- data.item_id=APP_REAL_D1;
7 B9 a9 v' i" V$ Z2 I - 0 s$ o6 P1 U v1 n/ O
- data.value.real=atof(((char **)str_mid)[1]);/ N8 q/ |6 I, h4 R
- / c1 f" D! b' u* w' C
- UF_STYLER_set_value(dialog_id,&data);
" U1 U( N" o) x' a7 l - # H, G, W4 y4 |, q/ a7 O
- UF_STYLER_free_value(&data); / c3 n* G" n. x9 l' B
- w2 G* n3 A! [3 ~! d- data.item_attr=UF_STYLER_VALUE;
4 z) J% w0 O4 v* s' U0 X
! h' y/ b3 n9 r- data.item_id=APP_REAL_D2;
! h' t+ O" \& ~7 |6 E
" K9 d( B% k. K) m- data.value.real=atof(((char **)str_mid)[2]);
c$ W; G/ r+ |$ @2 s
5 F# i, }. m3 t* T$ \- UF_STYLER_set_value(dialog_id,&data);
( u) j2 Y( p# _
5 n) S* K) k8 J+ m- UF_STYLER_free_value(&data);
! l7 M# n% ]% k# s, [
, b2 t. B, w6 |. P+ t/ v- data.item_attr=UF_STYLER_VALUE;
/ V7 o( i" u8 a6 E' J. K, ^ - 8 M5 L3 S; g. m' i; m
- data.item_id=APP_REAL_W;
" q: M+ X/ l" N7 Q - # H5 G. o# ^+ g5 L& E0 ]2 I. F
- data.value.real=atof(((char **)str_mid)[3]);- V/ G. X1 u0 Y1 M' r4 k7 |3 E
- % E. L0 B; s( A
- UF_STYLER_set_value(dialog_id,&data);
! d9 t4 v# @( t9 O8 k9 ` - 5 `5 J; t% [ G; O. ^- G5 k
- UF_STYLER_free_value(&data); 9 {: F5 P6 c2 p: w' _' M, D
- 5 W) x- p H h& h
- data.item_attr=UF_STYLER_VALUE;
* |" Q u2 M' O% K" | - + P; j: p6 L V; l5 U: u
- data.item_id=APP_INT_N;3 x; l7 H- Y& Z: n) b p. }% V
U/ N8 a/ s' n; ^* _- data.value.integer=atof(((char **)str_mid)[4]);2 R% q( l' M6 o/ T0 ?9 Z
, j. o7 Y4 v# |2 F0 b3 Q- UF_STYLER_set_value(dialog_id,&data);
; u% }. k" j) C - . u6 ^& \1 v! | p
- UF_STYLER_free_value(&data); ) u5 P, x' w, q) N/ c5 s
- & n) T& Z8 R: q" K( J
- data.item_attr=UF_STYLER_VALUE;2 E1 v, Z% @1 A$ ~" R+ B6 r
& m) N" j5 h$ @- data.item_id=APP_REAL_L;) D. H+ Q" k X) ^1 `2 c
' F9 [; M+ R* S5 l! A7 K$ T. R- data.value.real=atof(((char **)str_mid)[5]);5 ^& H& F8 n8 p% Q" A0 {
- 0 ?+ l# \+ w/ y y$ B7 a
- UF_STYLER_set_value(dialog_id,&data);
; `: Y% Y* D! S
: g/ m. L9 {& c( T! A+ r: k( I- UF_STYLER_free_value(&data); . M) O% |4 M. b3 a9 _* V
& v- d5 A) O3 q, x4 Q- data.item_attr=UF_STYLER_VALUE;( Y# f" n+ E+ ]+ @+ {
- / r) G/ L) T# X1 s) w( N
- data.item_id=APP_REAL_K;
2 f5 \7 Q7 M, z$ d8 Z
& D) K& {2 m4 B6 _, O% V3 j/ d- data.value.real=atof(((char **)str_mid)[6]);3 U1 K* S3 p. l, D( l* @/ a; _
- % F/ z5 j* @1 j, G
- UF_STYLER_set_value(dialog_id,&data);, [/ w( s! Z `- T+ F
- : l" h2 _! n1 e# e0 K5 V
- UF_STYLER_free_value(&data);
. {. o7 c5 U: [+ _
$ i! i7 o; I/ W' X0 c- data.item_attr=UF_STYLER_VALUE;
4 f/ ?7 C, z1 e - * f. r4 i' B) S* M3 g6 Q6 a) N
- data.item_id=APP_REAL_LL;+ \; O X9 z. v$ ^
5 L; p: c: \/ S1 H, q- data.value.real=atof(((char **)str_mid)[7]);
) Q% l' C1 B- }* {: K$ W
+ U3 |! c! h2 h7 F- UF_STYLER_set_value(dialog_id,&data);
5 ~( m' M; c* @7 ` K
: L0 z% ^: J/ L1 P; E+ b: ?- UF_STYLER_free_value(&data); ) z8 U+ M# v# b2 r) }( `
- , _. C2 [# d* L; ]. e5 _- G
- }
& x) s/ p2 u4 z% `" S3 S8 Z - - R1 |: D+ b8 U, [
- ; @+ m- r8 A8 h# B* P
- 6 F! a P1 |! I( E) v' b
- int APP_action_database ( int dialog_id,/ }7 l- V- l, N, f# o
- : e4 F' i4 R( Q
- void * client_data,- r; s' I3 q5 N5 k7 [
; n1 t" u' {: S$ w2 x- UF_STYLER_item_value_type_p_t callback_data)
0 K6 P# B6 x4 P( \4 S5 ] - + s/ i* t, i- N! z% S4 u4 a
- {
, W: F: @' u$ W5 a - ( Y* k+ V1 {8 [% x/ ^/ _
- /* Make sure User Function is available. */ 4 U5 v# ?& h% S1 @/ f' \& Y7 {
- " h1 L# c9 X7 J, ~
- if ( UF_initialize() != 0)
$ m& r* N. K* S" R. g, z
: `+ y2 w3 T: t6 q. d- return ( UF_UI_CB_CONTINUE_DIALOG );
# R4 a S) U! ~4 k5 Z - . v/ U( B8 D. B+ d$ `/ p
- 0 l1 J$ D) V0 e* `
- 2 r7 }5 a0 r/ U3 _9 h
- /* ---- Enter your callback code here ----- */
: h4 O9 s; |3 a. G8 @7 q. W2 H - ; R+ }6 c5 v! _) `! U- e
- char *str_mid[8];
: M# J6 X* X8 t/ z1 \& ?* V - # o$ w6 ^! r( C8 E3 g% X1 s
- if(para_database_func(str_mid)==true)4 R) I# t9 e* ]
- # m6 w' U; L) r% ]$ o0 y0 _& V
- read_para_from_database(dialog_id,str_mid);
/ U" P' G4 F3 X' ~. s; l. r# ~# E+ v - % V9 c$ \6 q6 s( _: E8 S. H
- for(int i=0;i<8;i++)0 t: A; M+ f. x# U
- % S$ R; d: n1 i4 j5 F( ` s* W
- {6 j) ~4 ~) A; h( n- F
* |! `( V u1 M: b- delete [] str_mid[i];
/ M+ f; t& E( F( W* {; J4 Y' H# y - / f) }6 n+ l$ B
- }' s; r, g* S. P1 J
- 5 z: b; i7 j* L
-
/ s* P" E9 E Y6 b( \
7 a2 k" X% ~: p2 t' P6 [- * K4 }' q9 l* Y' ?
- $ ~0 f9 |5 ^$ d1 B
- UF_terminate ();
: E4 I" c/ y6 z8 A/ h, O - 1 F2 S8 v. h% Z; u. h' n8 r9 a
- 0 n7 N! s. F6 b- M. L
- : J2 d6 b. v2 N- |3 u1 U% D( x
- /* Callback acknowledged, do not terminate dialog */# S, O' |3 f: l6 h J4 @
* z. W. `, U% l* A) x$ v6 R- return (UF_UI_CB_CONTINUE_DIALOG);- W4 U1 c, y1 g7 a. q! ?9 z
4 f7 ]7 ~2 i! D, K5 m; Y3 c- 2 k" U- X1 N, C+ p: z6 e/ N+ n- R! v: Y
- ' C4 w/ W& P( t4 @3 `
- /* or Callback acknowledged, terminate dialog. */4 @6 m! u! Q/ Y. e3 U. T% C
- # A% X: H! `6 A3 L' i
- /* return ( UF_UI_CB_EXIT_DIALOG ); */
8 O$ j7 r& q' m# V
1 E+ ~8 g3 G- M% t2 D+ F- 2 [; ?& j& n8 U1 @& p4 R7 D
, a0 s' a1 ]" W5 x( k0 } {- }
复制代码
% i1 B& P3 k$ q$ s
+ V0 A" v, }- v6 R+ C |
|