VC常用源码.docx

上传人:b****5 文档编号:2809832 上传时间:2022-11-15 格式:DOCX 页数:47 大小:50.04KB
下载 相关 举报
VC常用源码.docx_第1页
第1页 / 共47页
VC常用源码.docx_第2页
第2页 / 共47页
VC常用源码.docx_第3页
第3页 / 共47页
VC常用源码.docx_第4页
第4页 / 共47页
VC常用源码.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

VC常用源码.docx

《VC常用源码.docx》由会员分享,可在线阅读,更多相关《VC常用源码.docx(47页珍藏版)》请在冰豆网上搜索。

VC常用源码.docx

VC常用源码

VC常用源码

//注意事项===============================================>

//先执行OnInitDialog()函数,然后执行构造函数!

//98下没有新宋体

//XP下窗口高度加8

//滚动条处理方法**********************************************************************

//1,设置范围

m_spscroll.SetScrollRange(0,200);

SCROLLINFOsi;

si.cbSize=sizeof(SCROLLINFO);

si.nPage=100;

si.fMask=SIF_PAGE;//设置页宽

m_spscroll.SetScrollInfo(&si);

//2,处理消息,垂直滚动条加WM_VSCROLL消息,水平加WM_HSCROLL消息

voidCPrintView:

:

OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

if(pScrollBar->GetDlgCtrlID()==IDC_SCROLLBAR1)

{

intnCurrentPos=pScrollBar->GetScrollPos();

SCROLLINFOsi;

si.fMask=SIF_PAGE;//取得页宽

pScrollBar->GetScrollInfo(&si);

switch(nSBCode)

{

caseSB_THUMBTRACK:

//移动滑块

caseSB_THUMBPOSITION:

pScrollBar->SetScrollPos(nPos);//注意,设置页宽后滚动条的pos会以max/nPage倍数减少,所以在使用时注意把pos值*(max/nPage)才能得到原值

break;

caseSB_LINEUP:

//点向上小三角

pScrollBar->SetScrollPos(nCurrentPos-1);

break;

caseSB_LINEDOWN:

//点向下小三角

pScrollBar->SetScrollPos(nCurrentPos+1);

break;

caseSB_PAGEUP:

//向上一页

pScrollBar->SetScrollPos(nCurrentPos-si.nPage);

break;

caseSB_PAGEDOWN:

//向下一页

pScrollBar->SetScrollPos(nCurrentPos+si.nPage);

break;

}

}

CDialog:

:

OnVScroll(nSBCode,nPos,pScrollBar);

}

//锁定鼠标****************************************************************************

boolpOld;

CRectrt;

SetForegroundWindow();

SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,true,&pOld,SPIF_UPDATEINIFILE);

GetWindowRect(rt);

ClipCursor(rt);

//加到LRESULTCLockDlg:

:

WindowProc(UINTmessage,WPARAMwParam,LPARAMlParam)会有意外的效果

//在列表字符前插入一个负数字符以修改乱码******************************************************

intindex=m_list.GetSelectionMark();//在列表字符前插入一个负数字符以修改乱码

CStringcs;

cs=m_list.GetItemText(index,0);

charinsert_char=-87;

cs.Insert(0,insert_char);

m_list.SetItemText(index,0,cs);

//在列表中添加项目最大只能显示259个字符(不含'\0')*************************************************

intchar_length=cs.GetLength();//cs,ct为CString类对象,是要发到列表框的文本但是可能大于259字节

while(char_length>259)//如果大于259字节

{

ct=cs.Left(259);

m_list.InsertItem(0,ct);//在列表中添加项目最大只能显示259个字符(不含'\0')

cs=cs.Right(char_length-259);

char_length=cs.GetLength();

}

m_list.InsertItem(0,cs);//在列表中添加项目最大只能显示259个字符(不含'\0')

//<==========================================================

//设置NT窗口的透明度*******************************************

OSVERSIONINFOosv;

osv.dwOSVersionInfoSize=sizeofOSVERSIONINFO;

GetVersionEx(&osv);//取得版本信息

if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT)//VER_PLATFORM_WIN32_WINDOWS98Me用这个宏

{

//加入WS_EX_LAYERED扩展属性

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,

GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);//如果多次调用下面这个函数设置,这个函数只在一个位置调用一次就行了

HINSTANCEhInst=LoadLibrary("User32.DLL");

if(hInst)

{

typedefBOOL(WINAPI*MYFUNC)(HWND,COLORREF,BYTE,DWORD);

MYFUNCfun=NULL;

//取得SetLayeredWindowAttributes函数指针

fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");

if(fun)fun(this->GetSafeHwnd(),0,

200,//0~255

2);

FreeLibrary(hInst);

}

}

//字体对话框的初始化*********************************************

LOGFONTlf;

lf.lfHeight=-35;

lf.lfCharSet=134;

lf.lfWeight=400;

lf.lfOutPrecision=3;

lf.lfClipPrecision=2;

lf.lfQuality=1;

lf.lfPitchAndFamily=2;

strcpy(lf.lfFaceName,"宋体");//以上初始化为宋体26号字

CFontDialogcf(&lf);//字体

cf.m_cf.rgbColors=textcolor;//颜色

//移动没有标题的窗口**********************************************

//1定义:

CPointjust_point;

//2

voidCClockfortecherDlg:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

just_point=point;

CDialog:

:

OnLButtonDown(nFlags,point);

}

//3

voidCClockfortecherDlg:

:

OnMouseMove(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

WINDOWPLACEMENTwi;

GetWindowPlacement(&wi);

if(nFlags==MK_LBUTTON)

SetWindowPos(&wndTop,

wi.rcNormalPosition.left+(point.x-just_point.x),

wi.rcNormalPosition.top+(point.y-just_point.y),

0,0,SWP_NOSIZE);

CDialog:

:

OnMouseMove(nFlags,point);

}

//线程与信号量***************************************************

//1,定义信号量句柄

HANDLE event;

//2,创建信号量

event=CreateEvent(NULL,TRUE,FALSE,NULL);

//3,创建线程,

//1)定义线程函数,格式必须如下,其中lParam为AfxBeginThread的第二个参数值,可强制转化成所需类型

UINTWorkThreadProc(LPVOIDlParam)//必须是UINTXXX..XXX(LPVOIDlParam)

{

//代码示例WaitForSingleObject:

while

(1)

{//-----------------------注意,如果线程间要求同步或互斥的时候,要在每一层循环体中加入WaitForSingleObject

WaitForSingleObject((HANDLE)lParam,INFINITE);

//WaitForSingleObject的使用方法:

第一个为信号量HANDLE,是CreateEvent的返回值,第二个参数为等待的毫秒数(1/1000秒)

//第二个参数为INFINITE时则一直等待,直到调用SetEvent()设置信号量时函数返回;为数值(如1000)则函数在1秒后返回

//(即使你没调用SetEvent()设置信号量)

AfxMessageBox("fcuk");//不能用MessageBox()因为这不是在类中了...

ResetEvent((HANDLE)lParam);

/*重置信号量,以使WaitForSingleObject函数可以继续等待,否则(如果你已经调用过了SetEvent()设置了信号量)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1