改变窗体最顶一栏的颜色 请问如何改变窗体当中的位于标题一栏的颜色(本来传统的风格是蓝色的现在想用其它色彩来请问这样做呢?) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.china-askpro.com/msg14/qa59.shtml要实现自己绘制窗口的标题栏,必须拦截两个消息 WM_NCPAINT 和 WM_NCACTIVATE。我在这里给出部分关键的 C++ Builder 代码,其实用 Delphi 实现也是很容易的。class TForm1 : public TForm{// 窗体类声明细节省略private:void __fastcall WMNCPaint(TMessage &Msg);void __fastcall WMNCActivate(TWMNCActivate &Msg);protected:BEGIN_MESSAGE_MAPVCL_MESSAGE_HANDLER(WM_NCPAINT, TMessage, WMNCPaint)VCL_MESSAGE_HANDLER(WM_NCACTIVATE, TWMNCActivate, WMNCActivate)END_MESSAGE_MAP(TForm)};void __fastcall TForm1::WMNCActivate(TWMNCActivate &Msg){Msg.Result = true;if(!Msg.Active){DefWindowProc(this->Handle, Msg.Msg, Msg.active, 0);return;}TMessage pm;pm.Msg = Msg.Msg;pm.WParam = Msg.Active;WMNCPaint(pm);}void __fastcall TForm1::WMNCPaint(TMessage &Msg){HDC hdc;TRect cr;TCanvas *wc = NULL;DefWindowProc(this->Handle, Msg.Msg, Msg.WParam, Msg.LParam);hdc = GetWindowDC(this->Handle);try{wc = new TCanvas;wc->Handle = hdc;// 计算标题栏尺寸cr.Left = GetSystemMetrics(SM_CXFRAME);cr.Top = GetSystemMetrics(SM_CYFRAME);cr.Right = this->Width - 4 * GetSystemMetrics(SM_CXSIZE);cr.Bottom = cr.Top + GetSystemMetrics(SM_CYCAPTION) - 1;// 获取标题栏的 Rect 后就可以直接在 wc 画布上画了,直接在标题栏上出效果!// 绘画代码省略// ... ...}__finally{ReleaseDC(this->Handle, hdc);if(wc != NULL){delete wc;wc = NULL;}}}// 就这么简单 去掉标题栏用 Panel 仿造一个 注册成功,试试功能 如何获得所有windows用户的SID 定时器问题 pagecontrol的tabsheet标题颜色改变问题 (二)debussy :请你来领分! 各位高手赐教啊!请问在Dephi中如何可以知道Excel中的自定义宏的列表,并且调用相应的宏呢? 在线等待!!!pagControl问题 怎么对delphi的日期字段进行查询,用的是ACCESS 怎样提取句子中的汉字 Delphi6安装遇到“磁盘空间不足”,如何解决? 各位大哥,请告诉我一些支持ASP和Sql Server2000的网站空间,收费的 请问:一个字符串,如何取得其中每个单词的首字母?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货