AutoCAD的二次開發(fā)
(作者未知) 2009/7/19
(接上頁)D2000的安裝路徑,在不同的機器上可能內(nèi)容不同。
鍵值查詢函數(shù)若運行成功,將返回長整型數(shù)ERROR_SUCCESS。
下面可利用szData帶回的路徑名與已知路徑名組合成全路徑從而打開菜單文件acad.mnu添加內(nèi)容:
char szRootName[100]=\\support\\acad.mnu;
if (ret=ERROR_SUCCESS)
1strcat((char*) szData, szRootName);
現(xiàn)在szData中裝有acad.mnu的全路徑,以下操作將打開該文件并添入內(nèi)容:
HANDLE hfile=CreateFile((char*) szData, GENERIC_READ|GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
If(hfile!=INVALID_HANDLE_VALUE)
{
if (0xFFFFFFFF!=SetFilePointer(hfile, 0, NULL, FILE_END))
{
char szBuf[1000]="\n***POP12\n**CAM\n[&CAM]\n[-﹥基本參數(shù)]\n[卡盤原點]^c^cchuck_datam\n[換刀原點] ^c^ctool_datam\n[﹤-毛坯參數(shù)] ^c^cstock\n[工步設(shè)計] ^c^csteps\n[仿真加工] ^c^csimulation\n[代碼生成] ^c^cgen_code\n[代碼存盤] ^c^ccode_save\n[工藝存盤] ^c^csave_inf\n[工藝裝入] ^c^cload_inf\n[-﹥刀具管理]\n《創(chuàng)建新刀》 ^c^ccreate_new_tool\n[﹤-刀庫增刪] ^c^ctool_manage\n";
DWORD dwWrite=0;
BRet=WriteFile(hfile, szBuf, Lstrlen(szBuf), &dwWrite, NULL);
If (!bRet) Printerror();
}
CloseHandle(hfile);
}
上述操作中用CreateFile函數(shù)打開文件,SetFilePointer函數(shù)將指針移至文件末尾,字符串數(shù)組szBuf中裝有欲添加的內(nèi)容,以WriteFile函數(shù)寫入,PrintError為自編的錯誤處理函數(shù)。
以同樣的方法可以找到acad2000doc.lsp文件并添入內(nèi)容。
以下操作將創(chuàng)建一個名為“C:\hkcam”的子目錄,并將事先準備好的本程序所在目錄下的所有文件拷貝進去:
Cstring nam1, nam2;
BOOL bCreate=CreateDirectory("C:\\hkcam", NULL);//創(chuàng)建子目錄
CfileFind finder; //創(chuàng)建類對象
BOOL b Working=finder.FindFile("*.*");//利用類函數(shù)搜索所有文件
While(b Working)//循環(huán)搜索及文件拷貝
{
b Working=finder.FindNextFile();
nam1= finder.GetFileName();//獲得文件名
nam2= " c:\\hkcam\\";
nam2=nam2+nam1;//組成全路徑
BOOL bCopy=CopyFile(nam1, nam2, FALSE);//文件拷貝
}
所有操作成功后,以信息框告知:
MessageBox( NULL,“安裝成功,請按OK鈕繼續(xù)”,“安裝結(jié)果”,MB_OK);
整個程序以MFC靜態(tài)鏈接庫創(chuàng)建。上述所有內(nèi)容可以寫入一個源文件內(nèi),這里稱其為Append.cpp。為使最終執(zhí)行文件盡可能小,應刪去程序框架中所有不需要的內(nèi)容。為此,源文件中只保留Append.cpp,Append.rc,及StdAfx.cpp幾項;而頭文件中只有Append.h,Resource.h,及StdAfx.h幾項。所定義的唯一派生類為class CappendApp:public CwinApp,置于Append.h之內(nèi)(未完,下一頁)
|