| merhabalar. İntelliCAD'de exe içindeki olaylardan haberdar olmak CALLBACK olarak tabir ediliyor.
 Bununla ilgili bir örnek aşağıda mevcuttur.
 
 <pre id=code><font face=courier size=2 id=code>
 //IntelliCAD callback fonksiyonlarına örnek kod.
 
 //Komut tanımları
 static struct func_def func_table[] = {
 
 // command:(dynssget)
 {"dynssget"    , dynssget},
 // command:dynssget
 {"c:dynssget"    , dynssget},
 };
 
 sds_name g_ssname; //Seçim seti (Global)
 
 
 //Mouse' un altında kalan nesneleri highlight yapar.
 static int dynssget(struct sds_resbuf *rb)
 {
 int ret;
 struct sds_resbuf resb;
 sds_ssfree(g_ssname);//
 
 sds_printf("Mouse'u hareket ettirerek nesneleri seç\n");
 ret=sds_ssadd(NULL,g_ssname,NULL);
 
 //Callback'i başlat
 //Fonksiyonun bu kısmından itibaren
 sds_setcallbackfunc(cbfunc);
 
 char string1[512];
 
 
 ret=sds_getstring(0,"\nHit [Enter] when done: ",string1);
 if(ret==RTNORM){
 sds_getvar("CMDNAMES", &resb);
 if(strcmp(resb.resval.rstring,"C:DYNSSGET")==0)
 {//Şayet komut olarak girilmişse
 //(command:move,"selctionset" (dynssget))
 resb.restype=SDS_RTPICKS;
 sds_name_set(g_ssname, resb.resval.rlname);
 sds_putsym ("SELECTION", &resb);
 sds_retvoid();
 }
 else
 //Şayet fonksiyon olarak çağrılmışsa (Setq g_ssname (DYNSSGET))
 sds_retname(g_ssname, SDS_RTPICKS);
 
 }
 else
 sds_retnil();//seçim seti yok
 
 //Callback nesnesini boşaltır.
 sds_setcallbackfunc(cbfunc2);
 return RTNORM;
 }
 
 int cbfunc(int flag,void *arg1,void *arg2,void *arg3)
 {
 sds_point pt;
 sds_name ssname,ename;
 
 switch (flag) {
 //mouse move' da iken mouse koordinatlarını UCS ye göre verir.
 case SDS_CBMOUSEMOVEUCS:
 pt[0]=*(double *)arg1;pt[1]=*(double *)arg2;pt[2]=*  (double *)arg3;
 if(sds_ssget (NULL, pt, NULL, NULL, ssname)==RTNORM){
 sds_ssname (ssname, 0, ename);
 //seçilen nesneyi seçim setine ekle
 sds_ssadd(ename,g_ssname,g_ssname);
 //nesneyi kesikli çiz
 sds_redraw (ename, 3);
 sds_ssfree(ssname);
 }
 break;
 default:
 break;
 }
 
 return RTNORM;
 }
 
 //Boş fonksiyon
 int cbfunc2(int flag,void *arg1,void *arg2,void *arg3)
 {
 return RTNORM;
 }
 
 </font id=code></pre id=code>
 
 
 |