转载2

    技术2022-05-11  52

    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的需要而使用矩形,而不是文字坐标。

    9:54 | 添加评论  | 固定链接  | 引用通告 (0)  | 写入日志  | Windows mobile 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就好了. 9:34 | 添加评论  | 固定链接  | 引用通告 (0)  | 写入日志  | Windows mobile 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; 10:31 | 添加评论  | 固定链接  | 引用通告 (0)  | 写入日志  | 计算机与 Internet 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); } 14:33 | 添加评论  | 固定链接  | 引用通告 (0)  | 写入日志  | VC

    动态加载BMP图片

    HBITMAP   m_bitmap; m_bitmap   =   (HBITMAP)LoadImage(AfxGetInstanceHandle(),   "welcome.bmp",   IMAGE_BITMAP,   0,   0,   LR_LOADFROMFILE   );

    最新回复(0)