转载2

 
eVC下输出空心文字
 

void DrawHollowText( HDC hDC, RECT *pRect, LPCTSTR lpszString )
{
    // 开始画8个方向的轮廓,从左上角开始顺时针
    SetBkMode( hDC, TRANSPARENT );
    SetTextColor( hDC, 0x000000 ); // 黑色
    // 左上角
    --pRect->top;
    --pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 正上方
    ++pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 右上角
    ++pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 右
    ++pRect->top;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 右下角
    ++pRect->top;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 正下方
    --pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 左下角
    --pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 左
    --pRect->top;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
    // 画中央的文字(白色)
    SetTextColor( hDC, 0xffffff );
    ++pRect->left;
    DrawText( hDC, lpszString, -1, pRect, DT_LEFT | DT_TOP | DT_SINGLELINE );
}

说明:eVC下对于GDI的支持有限,所以只能根据DrawText的需要而使用矩形,而不是文字坐标。

4月14日
EVC4.0发生CVT1102错误的解决方法
Compiling resources...
Linking...
CVTRES : fatal error CVT1102: out of memory; 39 bytes required
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
这个错误CVTRES.exe的版本问题造成的,用Microsoft eMbedded C++ 4.0/Common/EVC/bin下的替换掉Microsoft eMbedded C++ 4.0/EVC/wce420/bin下的CVTRES.exe就好了.
4月11日
InstallShield修改注册表
function SetupRegistry()    
 NUMBER nResult;
 STRING szPath, szKeyName;    
 begin     
  RegDBSetDefaultRoot ( HKEY_CURRENT_USER );     
  szKeyName = "Software//ODBC//ODBC.INI//我的数据库";     
  if(RegDBKeyExist(szKeyName)<0) then      
   RegDBCreateKeyEx (szKeyName,"");     
  else      
   RegDBDeleteKey (szKeyName);      
   RegDBCreateKeyEx (szKeyName,"");
     endif;
    
  szKeyName = "Software//ODBC//ODBC.INI//ODBC Data Sources";    
  if(RegDBKeyExist(szKeyName)<0) then
      RegDBCreateKeyEx (szKeyName,"");    
  endif;    
  RegDBSetKeyValueEx ( szKeyName, "我的数据库" , REGDB_STRING ,"Microsoft Access Driver (*.mdb)" , -1);   
  szPath = TARGETDIR^"student.mdb";   
  szKeyName = "Software//ODBC//ODBC.INI//我的数据库";   
  RegDBSetKeyValueEx ( szKeyName, "DBQ" , REGDB_STRING , szPath , -1);   
  RegDBSetKeyValueEx ( szKeyName, "Description" , REGDB_STRING , "用于VC++的数据源" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "Driver" , REGDB_STRING , WINSYSDIR+"/odbcjt32.DLL" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "DriverID" , REGDB_NUMBER , "25" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "SafeTransactions" , REGDB_NUMBER ,"0" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "UID" , REGDB_STRING ,"" , -1);   
  RegDBCreateKeyEx ("Software//ODBC//ODBC.INI//我的数据库 //Engines","");   
  RegDBCreateKeyEx ("Software//ODBC//ODBC.INI//我的数据库 //Engines//Jet","");   
  szKeyName = "Software//ODBC//ODBC.INI//我的数据库 //Engines//Jet";   
  RegDBSetKeyValueEx ( szKeyName, "Driver" , REGDB_STRING , WINSYSDIR+"/odbcjt32.DLL" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "ImplicitCommitSync" , REGDB_STRING , "" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "Threads" , REGDB_NUMBER , "3" , -1);   
  RegDBSetKeyValueEx ( szKeyName, "UserCommitSync" , REGDB_STRING , "Yes" , -1);  
 end;
4月4日
绘制透明图片
void DrawTransparent(CDC* pDC, UINT nResId, int x, int y, COLORREF crColour)
{
 COLORREF crOldBack=pDC->SetBkColor(RGB(255,255,255));
 COLORREF crOldText=pDC->SetTextColor(RGB(0,0,0));
 CDC dcImage, dcMask;
 CBitmap bmp;
 
 bmp.LoadBitmap(nResId);
 BITMAP bm;
 bmp.GetBitmap(&bm);
 
 int nWidth=bm.bmWidth, nHeight=bm.bmHeight;
 
 //为图像及mask各创建一个DC
 dcImage.CreateCompatibleDC(pDC);
 dcMask.CreateCompatibleDC(pDC);
 //把图像装入image DC
 CBitmap* pOldBitmapImage=dcImage.SelectObject(&bmp);
 
 //为“掩码”位图创建一个单色bitmap
 CBitmap bitmapMask;
 bitmapMask.CreateBitmap(nWidth, nHeight, 1, 1, NULL); //把mask位图装入mask DC
 CBitmap* pOldBitmapMask = dcMask.SelectObject(&bitmapMask); //用透明色创建“掩码”位图
 dcImage.SetBkColor(crColour);//crColor是位图中的透明色
 dcMask.BitBlt(0, 0, nWidth, nHeight, &dcImage, 0, 0, SRCCOPY);//分3步进行实际的绘制
 pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT);
 pDC->BitBlt(x, y, nWidth, nHeight, &dcMask, 0, 0, SRCAND);
 pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT); //恢复原先设置
 dcImage.SelectObject(pOldBitmapImage);
 dcMask.SelectObject(pOldBitmapMask);
 pDC->SetBkColor(crOldBack);
 pDC->SetTextColor(crOldText);
}
动态加载BMP图片
HBITMAP   m_bitmap;
m_bitmap   =   (HBITMAP)LoadImage(AfxGetInstanceHandle(),
  "welcome.bmp",
  IMAGE_BITMAP,
  0,
  0,
  LR_LOADFROMFILE   );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值