讓RichEdit的Print()可以像PrintDialog可以選擇印表機 |
答題得分者是:ys168
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
|
astro0803
一般會員 發表:18 回覆:30 積分:9 註冊:2007-05-28 發送簡訊給我 |
|
ys168
初階會員 發表:3 回覆:24 積分:25 註冊:2005-10-14 發送簡訊給我 |
[code cpp] 此篇程式看是否對您有幫助? 『運用Hook行程,呼叫與設定設定列印格式>對話盒結構宣告 PAGESETUPDLG psd; ::ZeroMemory(&psd, sizeof(PAGESETUPDLG)); //設定結構成員 psd.lStructSize = sizeof(PAGESETUPDLG); psd.hwndOwner = Handle; //將列印格式>對話盒 if(::PageSetupDlg(&psd)) { HANDLE HMem; char device[MAX_PATH], driver[MAX_PATH], port[MAX_PATH]; //user可直接列印進行部分之程式碼.... //Printer()->BeginDoc(); //Printer()->Canvas->Rectangle(20,20,1000,1000); //Printer()->EndDoc(); //釋放全域性記憶體 ::GlobalFree(HMem); ::GlobalFree(psd.hDevNames); } } //--------------------------------------------------------------------------- //當創造一新<設定列印格式>對話盒時,即捕捉對話盒初始化訊息 UINT APIENTRY PageSetupHook(HWND HDlg, UINT uiMsg, WPARAM WParam, LPARAM LParam) { if(uiMsg == WM_INITDIALOG) { RECT FormRect, DialogRect; //取得訊息轉換成對話盒結構 LPPAGESETUPDLG lppsd = (LPPAGESETUPDLG)LParam; //取得Form1與對話盒的範圍 ::GetWindowRect(lppsd->hwndOwner, &FormRect); ::GetWindowRect(HDlg, &DialogRect); //計算Form1與對話盒的長寬 int cxForm = FormRect.right - FormRect.left; int cyForm = FormRect.bottom - FormRect.top; int cxDialog = DialogRect.right - DialogRect.left; int cyDialog = DialogRect.bottom - DialogRect.top; //將對話盒的移動至Form1居中出現 ::MoveWindow(HDlg, (cxForm - cxDialog) / 2 FormRect.left, (cyForm - cyDialog) / 2 FormRect.top, cxDialog, cyDialog, true); } return 0; } //--------------------------------------------------------------------------- [/code]
------
yangshuh |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |