VC点滴
来源:互联网 发布:js一次取指定数组元素 编辑:程序博客网 时间:2024/09/21 09:04
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 );
- VC点滴
- vc点滴
- VC点滴
- VC点滴
- VC++技术点滴
- vc入门知识点滴
- vc点滴2
- VC编程技巧点滴
- vc 使用点滴
- VC技术点滴
- vc++ 问题点滴
- VC 点滴 之 重绘
- VC 点滴之二 文件与注册表
- vc 学习点滴之终结篇
- 点滴
- 点滴
- 点滴
- 点滴
- 给大学生的良言
- 有朝一日
- 指定回车的响应事件
- struts2利用annotation和xml两种方式验证
- Google Adsense广告应避免的错误
- VC点滴
- Windows多线程多任务设计初步
- struts2.与spring集成
- rookit
- Prototype的深度探索
- GUI的開發瓶頸
- 内存泄漏检测工具
- JavaScript的prototype是什么
- LinQ学习--自动属性