|
本人做了个先在对话框里输入数据,然后创建套筒的小程序。对话框里加了一个用来确定套筒放置位置的按钮,点击按钮之后希望进行放置点的选择。。。
0 ~4 p" s3 I* j- Z: @ 我自己查了一下,好像是用UF_UI_select_with_single_dialog函数实现,可调试以后发现,只能选择孤立的点,而那种诸如圆的中心点啊,直线的端点之类的点都不能选择,请问这是为什么呢?
9 Q* M1 ]; m! s) Q/ x% G/ F! b% l 我希望实现的选择功能是可以选择到上面说的那种诸如圆的中心点啊,直线的端点之类的点,如何改进呢?望高手指点!( U: n3 W# v- h4 a5 n
本人写的放置点的按钮的回调函数:
9 U/ y, J* I" _! O8 @7 Rint CHANGE_action_6_act_cb ( int dialog_id,! J- g: M7 E( r% b: H
void * client_data,
" }! h; e/ q& {) d5 h' C" x UF_STYLER_item_value_type_p_t callback_data)8 N1 K! T( H, u) i8 o9 B! ]
{
. i; `+ ~$ }+ x; o: x0 U6 i /* Make sure User Function is available. */ 1 d" X" d. o, H
if ( UF_initialize() != 0)
; g6 H6 [$ U+ x; s, @: h; t2 S( j* q( c return ( UF_UI_CB_CONTINUE_DIALOG );
& D3 b+ x2 [# {! V7 ?( w5 D; D
2 M% \ T0 \$ g/ A6 Q char message[] = "请选择点作为放置点!";" ?3 _% ^2 _/ c* y* [
char title[] = "放置点选择";
( J8 \- A. M, t+ o) V8 S* k) r# a tag_t m_point_object;
6 y* h8 Q/ W' A& n) y' o+ q% ] int scope = UF_UI_SEL_SCOPE_NO_CHANGE;
5 U( G- i1 s+ M9 J int response = 0;
# X/ U" s0 k/ P3 V' v7 ~ double cursor[3] = {0.0};
. M( G) n6 D/ _! x4 e9 o$ a tag_t view = NULL_TAG;
6 o+ |, P$ N4 C1 `$ {5 W ' _9 I5 z" X- G; K. v$ u( V
//加锁
+ n# L) u1 N, ~7 ~0 [. E" ~ UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);
: z& t# B& _1 H/ x* \& o R" b( u; H6 a" c& Q* q# @/ I. @2 T5 `$ |2 _
UF_UI_select_with_single_dialog(message, title, scope, init_proc,NULL, &response, &m_point_object, cursor, &view);9 |" y. A+ z4 M5 Z. D7 z) l
7 o; l! L' r/ d. [+ O+ b3 r
//解锁- i; d: h3 u+ D4 ?4 _& `
UF_UI_unlock_UG_access (UF_UI_FROM_CUSTOM);
) V* }3 I9 m- z& `! b0 o) v& v0 p% M a/ m7 ?
// 将获得的点信息反传给数据输入框中的XYZ [1/4/2009 %CREATED BY AUDREY LEE%]
1 `7 O1 d8 ?1 a UF_CURVE_struct_p_t curve;
8 t% H8 C* o* M int curve_type;0 b* E3 X1 @4 u/ R! K( G( H
double *curve_data;
6 @) k: m; p3 J+ g8 T, h7 o2 M
$ n9 r( _& \% S6 `1 W1 y% }% \3 T UF_CURVE_ask_curve_struct(m_point_object, &curve);
' q) x$ [7 [5 q6 ]" X% P UF_CURVE_ask_curve_struct_data(curve, &curve_type, &curve_data);
0 q2 ]+ N, b, j5 k set_dlg_data(dialog_id, CHANGE_REAL_4, curve_data[0]);
, [, u" ^! ^+ F! Q set_dlg_data(dialog_id, CHANGE_REAL_5, curve_data[1]);. R. O, V0 h; J+ J0 h
set_dlg_data(dialog_id, CHANGE_REAL_6, curve_data[2]);1 P: u' Y( Q6 L2 a Q0 ]& K, E
) X7 j' T9 {3 ^3 ]2 I. a% f2 e
/ A! d% |$ ]0 Z& A% i9 t) C
8 N' x( N. _4 C2 C' ]0 Q" @ UF_terminate ();, z! y0 i2 M4 t0 l h/ P: y% T
6 z q6 o$ W; l9 ^' @5 x /* Callback acknowledged, do not terminate dialog */
8 e& q: G: Y$ V' \; v/ R9 m$ a return (UF_UI_CB_CONTINUE_DIALOG);
. y+ V( s6 a' j2 a+ ?/ |1 T1 T' q( r
! @+ ]& @0 a: y7 u7 Z$ v /* or Callback acknowledged, terminate dialog. */ Q4 ^' W4 Y8 F: Y$ r' t3 i. t
/* return ( UF_UI_CB_EXIT_DIALOG ); */7 b) [. K1 j. i4 c. R6 {
" A7 @! f6 a* i$ _$ x2 P, ]2 f} |
|