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