现在的位置: 首页 > 综合 > 正文

VC点滴

2013年03月06日 ⁄ 综合 ⁄ 共 2174字 ⁄ 字号 评论关闭

1.图像变灰2008/6/27

COLORREF cr = ::GetPixel(hDC,i,j); int nR = GetRValue(cr); int nG = GetGValue(cr); int nB = GetBValue(cr); //int nPer= (nR+nG+nB)/3;  //这两种方法,肉眼确实很难看的出差别

int nPer = nR*0.299 + nG*0.587 + nB*0.114 cr = RGB(nPer,nPer,nPer);  ::SetPixel(hDC,i,j,cr);   2.窗口透明效果实现  ::SetWindowLong(m_hWnd,GWL_EXSTYLE, ::GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);  int nAlpha  = 200;  //调用User32.DLL中的函数  HINSTANCE hInst = LoadLibrary(L"User32.DLL");  if(hInst)  {   typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);   MYFUNC fun = NULL;   //取得SetLayeredWindowAttributes函数指针   fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");   if(fun)fun(m_hWnd,0,nAlpha  ,2);   FreeLibrary(hInst);  }

3.在窗户区移动,移动整个窗口 A.WM_NCHITTEST   LRESULT hit = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam);    CPoint pt(LOWORD(lParam),HIWORD(lParam));   return rc.PtInRect(pt) ?  HTCAPTION:HTCLIENT ; B.窗户区的LButtonDown  SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));   4.CBitmapButton使用  m_bmpBtn.m_ImageList.CreateFromImage(IDB_BITMAP1,16,1, CLR_NONE,IMAGE_BITMAP);    DWORD style = BMPBTN_HOVER | BMPBTN_HOVER |BMPBTN_AUTO3D_SINGLE;     m_bmpBtn.SetImages(0,1,2,3);    m_bmpBtn.SetToolTipText ( L"Test Button" );      m_bmpBtn.Create(m_hWnd,CRect(0,0,100,100),NULL);      //m_bmpBtn.SubclassWindow(GetDlgItem(IDC_BUTTON1));       m_bmpBtn.SetBitmapButtonExtendedStyle(style);      5.修改Dialog的ClassName  在dlg.create(NULL)前加入以下部分 1.注册类名 WNDCLASS wc = {0};  if(!GetClassInfo(NULL,WC_DIALOG,&wc))  {       ATLASSERT(L"Failed GetClass/n");  }  wc.lpszClassName = L"AniMa";     if(!RegisterClass(&wc)) {   ATLASSERT(L"Failed RegisterClass/n");  }    if(dlgMain.Create(NULL) == NULL)  {    ATLTRACE(_T("Main dialog creation failed!/n"));     return 0;  } 2.修改rc资源     在.rc里的CAPTION "AniMationA1"下面加入 CLASS "AniMa"

 

4.FormatMessage对GetLastError()的解释输出

    LPVOID lpMsgBuf;
    FormatMessage(
     FORMAT_MESSAGE_ALLOCATE_BUFFER |
     FORMAT_MESSAGE_FROM_SYSTEM |
     FORMAT_MESSAGE_IGNORE_INSERTS,
     NULL,
     GetLastError(),
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
     (LPTSTR) &lpMsgBuf,
     0,
     NULL
    );
    
    // Process any inserts in lpMsgBuf.
    // ...
    
    // Display the string.
    MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
    
    // Free the buffer.
    LocalFree( lpMsgBuf );

抱歉!评论已关闭.