int SCREW_constructor ( int dialog_id,3 @# a$ e0 G0 q( l! O
void * client_data,
2 z7 M6 ~+ H A: d UF_STYLER_item_value_type_p_t callback_data)
" b9 L+ L, o1 a" [* l$ `6 K: U{- G; K2 a! Z {5 s' B
if ( UF_initialize() != 0) % p% @0 y* J3 Q" a, a" ^
return ( UF_UI_CB_CONTINUE_DIALOG );( [$ H8 d$ P+ o9 k8 F
UF_STYLER_item_value_type_t data;
, l( a3 a4 J3 L" q* t1 i) ] char *names[ SCREW_OPTION_CHOICE_COUNT ];
1 ^0 t; a: N6 w$ u/ h4 j try
4 E! N7 u; E4 u* d8 k+ z) J5 d {
" ]% y m# r7 _! M( M& ] CDatabase database;
0 x6 \# `% U4 j M database.OpenEx( _T("DSN=screw"), CDatabase::noOdbcDialog);
- z8 d( u4 Y0 p/ D* K2 ] Clzh ScrewSet;
0 t& ^# n; B9 A4 r0 j4 u% a4 L ScrewSet.Open( CRecordset::snapshot, "select * from lzh" );) H& W# G# P9 p1 Q
int i = 0;8 ~! u- e8 s+ b' i
do
: A: K/ z) M& Y8 M" a) l$ d- Y/ H' | {* U/ P8 H. P) K* I4 Y0 o
if( ScrewSet.IsEOF( ) ) break;
* V8 v; g7 a) g/ z1 m. u strcpy( names[ i++ ] = (char*)malloc( sizeof( char ) * 30 ), ScrewSet.m_SP );. Y$ F: q4 c9 e) g
2 J, M/ K" c. i5 l
ScrewSet.MoveNext( );0 J! b; H5 ~& l& `5 t
}while( 1 );
; Z& [1 o7 @0 K8 P) g" v database.Close( );8 S+ Y# q5 D/ H* S7 Y& ]
data.item_id = SCREW_OPTION_CHOICE;
- y1 x: D9 b+ I3 z- U3 x data.item_attr = UF_STYLER_SUBITEM_VALUES;
! g- w) q# Q+ @ J) T! K& v' R data.count = SCREW_OPTION_CHOICE_COUNT;
: A7 V- G: m% }/ f/ Y; X data.value.strings = names;6 h4 J* M+ s) T4 _9 \! l! g
UF_STYLER_set_value( dialog_id, &data );
+ u. s& l" o; E1 | data.item_attr = UF_STYLER_VALUE;
* V9 b8 }, p. A; x9 f7 E; p data.value.integer = 0;3 I6 r8 K6 ~4 q" `: P
UF_STYLER_set_value( dialog_id, &data );+ G1 {+ w; S; y8 N
for ( i = 0; i < SCREW_OPTION_CHOICE_COUNT; i++ )/ R# V; g! l1 i: C; E% e1 P
{# O( F3 K3 y9 t
free( names[ i ] ); o. |, d' O' |! Z9 n8 q: g1 P5 A" {
}. m. i" b9 ]: o% ^" x# j
}
% k1 X; C* C. P catch( CDBException *pe )
5 E6 m/ V1 x) {4 l+ h2 a/ m {
5 p3 M; T5 P0 D% w AfxMessageBox( "Exception!" ); R; L8 M. J f7 s, p# @1 v% K
AfxMessageBox( pe->m_strError );
: B4 Y; R. C3 c- q: H* ^7 E pe -> Delete( );/ m6 P, b4 A1 I# ?) i4 i
}
2 \- g8 m+ h5 \) H u! x. G& o UF_terminate();
: p! d/ K; F2 g3 N2 g$ E return ( UF_UI_CB_CONTINUE_DIALOG );# e: p; J' g+ q' y# Z% G
}" `( Q# o7 ?" l, Z; U& S# r5 _
这运行之后错误是:strcpy(names[i++]=(char*)malloc(sizeof(char)*4),ScrewSet.m_SP);
, I, n6 t7 }/ ^谢谢各位了。 |