VC点滴

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 );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值