markov
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:55 回覆:135 積分:53 註冊:2003-12-01
發送簡訊給我
|
我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
|
m8815010
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:99 回覆:372 積分:289 註冊:2003-11-13
發送簡訊給我
|
引言:
我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
markov你好 : 真對你的問題我覺得有三個作法: <>
> 這裏我用第 >! < class="code"> In Unit.cpp ~~~ TForm1 *Form1; BOOL CALLBACK EnumChindWnd(HWND hwnd,LPARAM lparam); //---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
HWND hwnd=NULL; while (hwnd==NULL)
hwnd=FontDialog1->Handle; EnumChildWindows(hwnd,(WNDENUMPROC)EnumChindWnd,0); Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
BOOL CALLBACK EnumChindWnd(HWND hwnd,LPARAM lparam)
{
char ClassName[128];
char TextName[128]; ZeroMemory(ClassName,128);
ZeroMemory(TextName,128); GetClassName(hwnd,ClassName,128);
GetWindowText(hwnd,TextName,128); if (AnsiString(TextName)=="色彩(&C):")
ShowWindow(hwnd,SW_HIDE); if (AnsiString(ClassName)=="ComboBox") {
char ItemText[128]; ZeroMemory(ItemText,128);
SendMessage(hwnd,CB_GETLBTEXT,0,(LPARAM)ItemText); if (AnsiString(ItemText)=="黑色")
ShowWindow(hwnd,SW_HIDE);
} return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
FontDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Timer1->Enabled=false;
Timer1->Interval=10;
}
//--------------------------------------------------------------------------- 使用結果如下: color相關的東東已經被hide掉了,如果不想hide的話,只要show的時候把Timer關掉即可!That's all ! 發表人 -
|
markov
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:55 回覆:135 積分:53 註冊:2003-12-01
發送簡訊給我
|
真是太厲害了!
我想順便請教一下,我要k那些書才會有寫這些api or callback function的資料
看msdn頗辛苦
|
m8815010
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:99 回覆:372 積分:289 註冊:2003-11-13
發送簡訊給我
|
引言:
真是太厲害了!
我想順便請教一下,我要k那些書才會有寫這些api or callback function的資料
看msdn頗辛苦
>>< face="Verdana, Arial, Helvetica"> 嗯,這狗嘛 ……同之前我在其它文章的意見,針對 >! 書也是有的啦!我有在看的是一家叫<><>>>出的,之前沒看過這一家,書是我從公司圖書館幹來的!書名是 >!
|
markov
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:55 回覆:135 積分:53 註冊:2003-12-01
發送簡訊給我
|
我也知道要看msdn,
但是看起來頗辛苦,
正如m8815010兄所說的過程通常不是很美好,
所以我才會希望有一本有系統的介紹,而且最好都有例子介紹的書
帶領我快速的提昇功力,
其實我自已也找了很久,就是沒有!
不過還是我謝謝m8815010兄的指點!
|
markov
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:55 回覆:135 積分:53 註冊:2003-12-01
發送簡訊給我
|
不好意思
再問一個問題,我要如何攔TFontDialog的訊息
是使用WndProc嗎?
|
tqpzxy
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:13 回覆:22 積分:7 註冊:2003-11-13
發送簡訊給我
|
引言:
我想要擁有TFontDialog的style,size,fontname等屬性設定的功能,但是我不要color的屬性設定(因為要輸出的設備只有單色),有沒有方法可以disable這個選項,或者用其他什麼方法我可以自已完成TFontDialog without color
CHOOSEFONT cf;
ZeroMemory(&cf, sizeof(CHOOSEFONT));
cf.lStructSize = sizeof(CHOOSEFONT);
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; // 更多選項請見說明檔
if (ChooseFont(&cf)) {
[由 cf 讀取使用者的決定]
}
|
tqpzxy
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:13 回覆:22 積分:7 註冊:2003-11-13
發送簡訊給我
|
引言:
不好意思
再問一個問題,我要如何攔TFontDialog的訊息
是使用WndProc嗎?
攔截的方法有很多種 1. 使用 SetWindowLong 及 CallWindowProc (這兩個是 API 函數) 2. 繼承元件後編寫新的 Dispatch (Dispatch 為 VCL 元件的成員函數) 3. 利用函數指標 4. 還沒想到 ^^
|