标签: 杂谈 |
分类:minigui |
1,控件的隐藏 ShowWindow( GetDlgItem( hwnd, IDC_PROMPT ), SW_HIDE );
2、控件之间切换
( 1 ) 使用WS_EX_TOPMOST风格,然后用Tab键 。
( 2 ) 在MSG_KEYDOWN中截取消息,然后用SetFocusChild函数 。
3、去掉对话框上的关闭按扭 用 WS_EX_NOCLOSEBOX 风格
4、改变和移动窗口大小 SetWindowPos() or MoveWindow()
*控件前景色设置 ( 包括标题栏、边框、字体等 )
SetWindowElementColorEx( hwnd, item, color ) 且用 UpdateWindow( hwnd, TRUE )刷新
*修改edit , staic控件的前景色 SetWindowElementColorEx( pshwnd, FGC_CONTROL_NORMAL,COLOR_red );
* 修改button控件的前景色 SetWindowElementColorEx( pshwnd, WED_3DBOX_REVERSE,COLOR_red );
*控件背景色设置 SetWindowBkcolor() 且用 InvalidateRect( hwnd, NULL, TRUE ) 刷新
*设置控件字体 SetWindowFont (GetDlgItem(hDlg,IDCANCEL1), font0); font0 为创建的逻辑字体
*控件的透明 MiniGUI2.0.3及以前版本不支持透明窗口,但是支持透明控件。创建透明控件:如果想在一个窗口上创建一个透明特性的控件,在创建窗口的时候加上
WS_EX_TRANSPARENT 风格。支持透明特性的控件如下:静态框、编辑框、按钮(单选钮和复选框)、列表框(除图片列表框)、进度条、工具栏、滑块、
scrollview控件、树型控件、列表型控件、旋钮控件、酷工具栏、动画控件和iconview控件(在图标及文字处不可透明,这些以外的控件区域可以,图片为透明也可以)。
例如:(1) CreateWindowEx( "edit", "Close", WS_CHILD|BS_PUSHBUTTON |BS_NOTIFY|WS_VISIBLE,WS_EX_TRANSPARENT,
IDOK1+4, 100, 20, 90,38,hDlg,0 );
(注:CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data)即为:
CreateWindowEx(class_name, caption, style, 0,id, x, y, w, h, parent, add_data) )
(2): 在对话框中如下
{
"button",
WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
200, 220, 90, 38,
IDCANCEL1,
"Cancel", 0,
WS_EX_TRANSPARENT
},
static CTRLDATA CtrlYourTaste[] =
{
"edit",
WS_VISIBLE ,
70, 220, 90, 38,
IDOK1,
"ok", 0,
WS_EX_TRANSPARENT
},
*普通按钮上显示位图或图标 位图使用BS_BITMAP风格,图标使用BS_ICON风格 例如:
CreateWindow("button","Close", WS_CHILD|BS_PUSHBUTTON|BS_ICON|BS_REALSIZEIMAGE|BS_NOTIFY|WS_VISIBLE,IDOK1+1,
100, 120, 90, 38,hDlg,(DWORD)GetSystemBitmap ( SYSBMP_ARROWS ) );
CreateWindow("button","Close", WS_CHILD|BS_PUSHBUTTON|BS_ICON|BS_REALSIZEIMAGE|BS_NOTIFY|WS_VISIBLE,IDOK1+1,
100, 120, 90, 38,hDlg,(DWORD)GetSmallSystemIcon( IDI_STOP ) );
CreateWindow("button","Close", WS_CHILD|BS_PUSHBUTTON|BS_ICON|BS_REALSIZEIMAGE|BS_NOTIFY|WS_VISIBLE,IDOK1+2,
200, 120, 90, 38,hDlg,(DWORD)LoadIconFromFile( HDC_SCREEN,"myicon.ico",0));
在对话框中如下:
{
CTRL_BUTTON,
WS_TABSTOP |BS_PUSHBUTTON| WS_VISIBLE|BS_BITMAP ,
170, 100, 60, 25,
IDCANCEL,
"cancel",
(DWORD)GetSystemBitmap( SYSBMP_ARROWS )
}
{
CTRL_BUTTON, // 按钮BS_BITMAP
WS_TABSTOP | BS_PUSHBUTTON| WS_VISIBLE|BS_BITMAP ,
100, 100, 60, 25,
IDOK,
"OK",
(DWORD)&bmp_bkgnd
},
{
"static", //静态框为SS_BITMAP
WS_TABSTOP | WS_VISIBLE|SS_BITMAP ,
170, 100, 60, 25,
IDCANCEL,
"cancel",
(DWORD)&bmp_bkgnd
*窗口的关闭:
PostMessage (hWnd, MSG_CLOSE, 0, 0); 近似相当于 DestroyMainWindow( hWnd ); PostQuitMessage( hWnd );
******************************************************************************
如何设置文本前景色和背景色:
(1), 获取DC : BeginPaint(hwnd)
(2),设置文本背景颜色: SetBkColor( hdc, color )
(3) 设置文本前景颜色(即字体颜色): SetTextColor( hdc,color )
(4)最后文本输出即可: TextOut( hdc, x, y, text )
当DC为创建的DC时:即
mem_dc = CreateMemDC( 640, 480, 16,MEMDC_FLAG_HWSURFACE |
MEMDC_FLAG_SRCALPHA ,
0x0000F000, 0x00000F00, 0x000000F0, 0x000000F );
此时DC的设置与应用函数是:
SetBrushColor (mem_dc, RGBA2Pixel (mem_dc, 0x00, 0x00, 0xFF, 0xFF));
FillBox (mem_dc, 10, 10, 200, 50);
SetPenColor( mem_dc, RGB2Pixel (mem_dc, 0x00,0xFF,0x00 ));
SetPenWidth( mem_dc, 3 );
LineEx( mem_dc, 0, 0, 100, 100 );
SetTextColor( mem_dc,RGBA2Pixel (mem_dc, 0x00, 0x00, 0xFF, 0xFF));
SetBkColor( mem_dc, RGBA2Pixel (mem_dc, 0x00, 0xFF, 0x00, 0xFF) );
TextOut( mem_dc, 10, 10, "您好!");
BitBlt (mem_dc, 0, 0, 0, 0, hdc, 0, 0, 0);
DeleteMemDC( mem_dc );
4,设置文本 的字体 (1) 创建字体
font0=CreateLogFont( FONT_TYPE_NAME_SCALE_TTF,
"arial", "ISO8859-1",
FONT_WEIGHT_BOOK,FONT_SLANT_ROMAN,FONT_SETWIDTH_NORMAL, FONT_OTHER_AUTOSCALE,
FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 256, 0 );
(2) 选择和 使用字体 case MSG_PAINT:
hdc=BeginPaint(hDlg);
SelectFont(hdc,font0);
TextOut(hdc, 30, 10,"OK");
EndPaint( hDlg, hdc );
return 0;
5,* 设置输出文本背景透明
hdc = BeginPaint (hDlg);
SetBkColor( hdc, COLOR_transparent );
SetBkMode( hdc,BM_TRANSPARENT );
DrawText (hdc, msg_text, -1, &msg_rc, DT_LEFT | DT_WORDBREAK);
EndPaint (hDlg, hdc);
*********************************************
|