乙個簡單對話方塊布局及驅動程式例子(未完成)

2021-09-25 11:28:29 字數 2128 閱讀 3449

這裡寫的是乙個簡單對話方塊驅動程式的例項,對話方塊檔案的名字是「1.dcl」,存放在d驅動器的example\dcl\目錄下,對話方塊的名字是yuan,外觀見圖。

首先是對話方塊布局dcl檔案

yuan:dialog//影象引用結束

:boxed_column//編輯框1引用結束

:edit_box//編輯框2引用結束

:edit_box//編輯框3引用結束

}//加框列引用結束

}//行引用結束

ok_cancel;// 引用ok_cancel組合控制項

}

然後是驅動程式lsp檔案:

;定義以對話方塊方式入圓的圓心和半徑繪製圓的命令。

;繪製圓的對話方塊驅動程式,檔名為1.lsp

(defun c:drawcirc( / xc yc r id x1 y1 );主函式,drawcirc 是autocad命令名。

(defun getdata();定義getdata 函式,其功能是獲取三個編輯框的最終資料

(setq xc(atof(get_tile "x")));獲取編輯框x的值,轉換為實數後賦給變數xc

(setq yc(atof(get_tile "y")));獲取編輯框y的值,轉換為實數後賦給變數yc

(setq r(atof(get_tile "r")));獲取編輯框r的值,轉換為實數後賦給變數r

)(setq sdt 0);設定狀態引數sdt為0

(setq id(load_dialog "d:\\example\\dcl\\1.dcl""));裝入dcl檔案,1是對話方塊檔名。

(if (< id 0)(exit)) ;如果裝入失敗則退出

(setq xc 50.0 yc 50 r 25);設變數初值

(if (not (new_dialog "yuan" id))(exit));顯示名字為yuan的對話方塊,如果失敗則退出

(setq x1(dimx_tile "img_cr"));得到圖象寬,img_cr是影象的關鍵字

(setq y1(dimy_tile "img_cr"));得到圖象高

(start_image "img_cr");圖象操作開始

(slide_image 0 0 x1 y1 "d:\\example\\sld\\12-12");填寫圖象內容,1是幻燈片檔名。

(end_image);圖象操作結束

(set_tile "x" (rtos xc 2 2));設定編輯框x初值

(set_tile "y" (rtos yc 2 2));設定編輯框y初值

(set_tile "r" (rtos r 2 2));設定編輯框r初值

;如果在dcl檔案中,已經為上述編輯框設定了初值,可以缺少以上3行。

(action_tile "accept" "(getdata) (done_dialog 1)");定義ok按鈕的活動是執行getdata函式,然後以1為狀態值關閉對話方塊

(action_tile "cancel" "(done_dialog -1)");定義cancel按鈕時的活動是以-1為狀態值關閉對話方塊

(setq sdt (start_dialog));顯示對話方塊,將得到關閉對話方塊時的狀態值

(unload_dialog id);解除安裝對話方塊檔案

(if (> sdt 0);判斷關閉對話方塊時的狀態值,即單擊哪個按鈕關閉的對話方塊

(command "circle" (list xc yc) r));如果單擊了ok按鈕,則畫圓

(princ)

)

載入以上autolisp檔案",呼叫drawcirc命令,既可彈出下圖所示繪製圓的對話方塊,進行繪製圓的操作。

可是我也不知道為什麼我的沒有出來,監視返回值為nil,檢查了好久也不知道錯哪了(

(slide_image 0 0 x1 y1 「d:\example\sld\12-12」);這一句加不加字尾啥的都試了,其他地方我也檢查不出來…),什麼時候解決了再來修改,貼上我的半成功結果:

對話方塊程式向另乙個對話方塊傳送訊息

兩個不同的程式之間傳送訊息,這兩個程式都是對話方塊程式。先查詢另外乙個程式的視窗控制代碼,然後通過控制代碼傳送訊息。1 新建乙個基於對話方塊的mfc應用程式searchtest,刪除對話方塊中原有控制項。2 定義乙個訊息巨集 define um use message wm user 100 3 在...

彈出乙個對話方塊

showmodaldialog 開啟獨佔方式網頁對話方塊 window.showmodaldialog 開啟乙個獨佔方式網頁對話方塊 話法 syntax variant object.showmodaldialog surl varguments sfeatures 引數 描述 surl 指點url...

將乙個對話方塊直接貼到另乙個對話方塊上

假設要貼的對話方塊是cgroup,被貼的是b 第一步 在b類的protected中新增cgroup m lpgroup 第二步 在b類的oninitdialog中新增以下 新增按鈕組到對話方塊 m lpgroup.create idd group,this m lpgroup.setwindowpo...