标题
[sdk/windows/ppc]edit 的颜色和 DWL_MSGRESULT
clq
浏览(0) +
2008-04-24 18:29:04 发表
编辑
关键字:
[sdk/windows/ppc]edit 的颜色和 DWL_MSGRESULT
ppc 下设置 edit 的颜色,还不太成功。真机上是不行的。
case WM_CTLCOLOREDIT:
if( lParam == (LPARAM)::GetDlgItem( hwndDlg,IDC_EDIT_TEXT) )
{
HDC hdc = (HDC )wParam ;
RECT rect;
// GetClientRect(hwndDlg, &rect);
// ::SetBkColor( hdc,BLACK_PEN);
// HBRUSH brush = CreateSolidBrush(BKCOLOR );
// FillRect(hdc,&rect,m_pThis->brush);
// DeleteObject(brush);
//::SetTextColor( hdc,RGB(255,0,0));
SetBkMode( hdc, TRANSPARENT );
SetBkColor( hdc,BKCOLOR);
SetWindowLong (hwndDlg, DWL_MSGRESULT, (long)m_pThis->brush);
//return ( INT_PTR )BLACK_PEN;
//return ( INT_PTR )GetStockObject(NULL_BRUSH);
return TRUE;
}
break;
在 windows 下直接这样就行了的。
//更改 memo 的颜色
if (hwnd == dlg->m_memo_panel.handle)
{
if (message == WM_CTLCOLOREDIT)
{
//WM_CTLCOLOREDIT
HDC hdc = (HDC) wParam; // handle of display context
HANDLE handle = (HWND) lParam; // handle of static control
//有文字部分的背景颜色
SetBkColor(hdc, RGB(255, 0, 0));//注意 hdc 是从消息中的参数得到的,不能用 GetDC() 从窗口句柄中得到,这样做的原因可能是它内部用双缓冲实现,是先到内存图的,不管怎样不是直接用窗口的画布
SetTextColor(hdc, RGB(255, 255, 0));//字体颜色
//SetPen(BLACK_PEN);
//SetBkMode(GetDC(hwnd), TRANSPARENT);
//没有文字部分的背景颜色
HBRUSH hbr = (HBRUSH)GetStockObject(BLACK_BRUSH);
(* pHook) = true;
return (LRESULT)hbr;
//return 1;
}
clq
发表时间:2005-7-19 14:32:00 [回复] [引用]
5 楼
问题终于搞定,修改的代码如下:
case WM_NOTIFY:
lpnmh = (LPNMHDR)lParam;
switch(lpnmh->code)
{
case UDN_DELTAPOS:
lpnmud = (LPNMUPDOWN)lParam;
if(lpnmud->iPos+lpnmud->iDelta>= 20 )//不能改为lpnmud->iPos
{
SetWindowLong(hwnd,DWL_MSGRESULT,TRUE);//必须加这句
return TRUE;
}
else
{
return FALSE;
}
}
break;
经过这次我明白了在对话框中返回TRUE或FALSE只代表是否用户处理该消息,并不代表消息的返回值,对于有返回值的消息,要用函数SetWindowLong(hwnd,DWL_MSGRESULT,value);a其中value用来设置消息返回值。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.