检查指定文件夹是否存在:PathIsDirectory()
方法一:
检查给定路径是否根目录:BOOL PathIsRoot(LPCTSTR pPath);
说明:Returns TRUE for paths such as “/”, “ X:/”, “// server/ share”, or "// server/".Paths such as "../path2" will return FALSE.
用这两个函数要先:#include
;
再把这个文件加入工程:shlwapi.lib
方法二:
GetFileAttributes检查文件是否存在,并且检查是否文件夹属性FILE_ATTRIBUTE_DIRECTORY
----------------------------------------------------------
DWORD = GetFileAttributes(_T("f://win98"));
if(dwAttr != 0xFFFFFFFF && (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
cout<<"exist"<
else
cout<<"NOT exist"< ----------------------------------------------------------
方法三:
用下面第113条的_access函数同样可以
----------------------------------------------------------
if(_access("f://win98",0)!=-1)
cout<<"exist"< else
cout<<"NOT exist"< ----------------------------------------------------------
方法四:
用PathFileExists函数,见MSDN介绍,需要的条件同方法一。
还有一个:BOOL SHGetPathFromIDList(LPCITEMIDLIST pidl,LPTSTR pszPath);
Converts an item identifier list to a file system path.
去掉单文档标题栏上的"无标题-"
http://community.csdn.net/Expert/topic/4454/4454093.xml?temp=.2896997
打开显示器: ::SendMessage(GetSafeHwnd(), WM_SYSCOMMAND, SC_MONITORPOWER, -
关闭显示器: ::SendMessage(GetSafeHwnd(), WM_SYSCOMMAND, SC_MONITORPOWER,
得到它的工作状态:
休眠状态是指用SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1)关闭的
--------------------------------------------------------------------------------
The GetDevicePowerState function is supposed to retrieve the current power state of the specified device. However, Apps may fail to use GetDevicePowerState on the display, as they can't get a handle on "//./Display#", while the # index is 1-based, or "//./LCD", for security reasons.
If you are trying to do this on Windows XP, then you can use SetupDiGetDeviceRegistryProperty and Property: SPDRP_DEVICE_POWER_DATA to get the power management information. This is documented in the Windows XP DDK.
The WMI Class Win32_DesktopMonitor does not report the power state. use SPI_GETPOWEROFFACTIVE or DeviceIOControl with IOCTL_VIDEO_GET_POWER_MANAGEMENT will simply reports power management is enabled or not. SPI_GETPOWEROFFACTIVE just determines whether the power-off phase of screen saving is enabled or not.
BTW, you can always use the SetThreadExecutionState or other APIs (you have used) to switch ON the monitor no matter the monitor is in the ON or OFF state.
References
http://msdn.microsoft.com/library/en-us/Display_r/hh/Display_r/VideoMiniport_Functions_b47b2224-5e0b-44af-9d04-107ff1299381.xml.asp
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_desktopmonitor.asp
得到系统时间、语言等的设置
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITIME, lpLCData, cchData);
文件是否存在(记得先包含头文件#include
)
----------------------------------
if(_access("c://somefile.txt",0)!=-1)
//存在
else
//不存在
---------------------------------
还有一个方法:
---------------------------------------------
if(GetFileAttributes("f://test.txt")!=0xFFFFFFFF)
{
//存在
}
else
{
//不存在
}
----------------------------------------------
在CStatic上面关联图片
----------------------------------------------
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC);
pWnd->ModifyStyle(0, SS_BITMAP);
//只能显示.bmp文件
pWnd->SetBitmap((HBITMAP)::LoadImage(0, "c://zzzzz.bmp",
IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE));
----------------------------------------------
显示文件夹浏览对话框, 得到用户选择的文件夹
----------------------------------------------
char szDir[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDir;
bi.lpszTitle = "请选择目录";//strDlgTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL)
return;
if(!SHGetPathFromIDList(pidl, szDir))
return;
AfxMessageBox(szDir); //szDir中存放的内容为用户选定的目录
-----------------------------------------
去除字符串中指定的字符:
-----------------------------------------
CString strtemp;
strtemp.Format("%s","abc/n123/ndef");
strtemp.Remove('/n'); //这里以去除换行符为例,结果保存在strtemp中了
假如当前时间2005-09-09,如何计算在该时间前12345天,是哪年哪月哪日?
---------------------------
CTime tm(2005,9,9,0,0,0);
tm-=86400*12345;
cout< ----------------------------
PeekMessage是干什么用的: http://community.csdn.net/Expert/topic/4462/4462828.xml?temp=.8852045
拖动控件时实现类似windows拖动窗口的效果:CRectTracker
Mackz朋友的blog中有它的范例:http://blog.csdn.net/Mackz/archive/2005/10/27/517747.aspx
有关UNICODE、ANSI字符集和相关字符串操作的总结:http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=199372
寻找系统中的打印机:EnumPrinters
用代码加入外部模块的方法:#pragma comment(lib,"mylib.lib")
判断指定点是否在一个矩形框内:CRect::PtInRect(POINT point)
winAPI 函数GetTextExtentPoint32()可以得出一个以像素为单位的字符串的宽度。
RGB转换成YV12(YUV 4:2:0)的方法:http://www.fourcc.org/fccyvrgb.php
获得指定进程占用内存的情况,用GetProcessMemoryInfo()函数。
把CONSOLE程序的输出导入到文件中,用程序控制:http://community.csdn.net/Expert/topic/4403/4403431.xml?temp=.7469599
http://www.codeproject.com/dialog/quickwin.asp
把CRichEditCtrl中的文字保存到rtf文件:http://community.csdn.net/Expert/topic/4478/4478640.xml?temp=.1313135
在codeproject上还有从CRichEditCtrl类派生新类的,功能增强了很多:http://www.codeproject.com/richedit/autoricheditctrl.asp
还有一个开发类似写字板那样程序的完整范例:http://www.codeproject.com/tools/simplewordpad.asp
MFC中使用ATL字符转换宏:在你的函数开关加上USES_CONVERSION;语句,详见MSDN或这里:http://community.csdn.net/Expert/topic/4479/4479609.xml?temp=.6256983
如何建立共享目录:直接调用标准的Win32API函数NetShareAdd和NetShareDel
详见MSDN及:http://community.csdn.net/Expert/topic/4481/4481371.xml?temp=.4405023
位图文件读写基础:http://www.vckbase.com/document/viewdoc/?id=674
用VC实现支持多语言的程序:http://www.vckbase.com/document/viewdoc/?id=1102
在属性页控件的标签上加图片:http://www.codeguru.com/cpp/controls/propertysheet/article.php/c611/
http://community.csdn.net/Expert/topic/4492/4492593.xml?temp=.9977991
--------------------------------------------------
BOOL CMyPropSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
m_imageTab.Create( IDB_TABIMAGES, 13, 1, RGB(255,255,255) );
CTabCtrl *pTab = GetTabControl();
pTab->SetImageList( &m_imageTab );
TC_ITEM tcItem;
tcItem.mask = TCIF_IMAGE;
for( int i = 0; i < 3; i++ )
{
tcItem.iImage = i;
pTab->SetItem( i, &tcItem );
}
return bResult;
}
这里有很多CRichEditCtrl控件的高级用法:http://www.codeguru.com/Cpp/controls/richedit/
CGridCtrl控件的一些应用:http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=327
一个不错的地方:http://www.vckbase.com/document/listdoc.asp?mclsid=3&sclsid=323
怎样使右键菜单也能变灰、打勾:http://community.csdn.net/Expert/topic/4501/4501123.xml?temp=.4074823
MD5加密解密的API:http://community.csdn.net/Expert/topic/4502/4502325.xml?temp=.6894647
MD5Init
MD5Final
MD5Update
用CBrush::CreateStockObject(HOLLOW_BRUSH);或CBrush::CreateStockObject(NULL_BRUSH);这两个可以创建镂空的画刷。
创建不规则窗体:http://www.vckbase.com/document/viewdoc/?id=1345
拖动一个没有标题栏的窗体:http://community.csdn.net/Expert/topic/4499/4499796.xml?temp=6.763858E-02
屏蔽浏览器中的弹出广告,下面地址中是在ATL中采用BHO服务的方法:http://www.codeproject.com/atl/popupblocker2.asp
CSDN上有个讨论贴:http://community.csdn.net/Expert/topic/4496/4496918.xml?temp=.157284
远程线程注入:
http://www.codeproject.com/threads/RmThread.asp
http://www.codeproject.com/library/InjLib.asp
http://www.codeproject.com/win32/Remote.asp
CEditView中两个函数的用法:
GetEditCtrl().ModifyStyle (0 , WS_VSCROLL |ES_AUTOHSCROLL |ES_AUTOVSCROLL |WS_HSCROLL |ES_WANTRETURN | ES_MULTILINE);
GetEditCtrl().GetSel(m_nStartChar, m_nEndChar ) ;
给对话框窗体底部加上状态条,把下面代码加进对话框的OnInitDialog()函数中:
-----------------------------------------------------------
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
//下面m_wndStatusBar必须先在对话框类中声明:CStatusBar m_wndStatusBar;
if (!m_wndStatusBar.Create(this,WS_CHILD|WS_VISIBLE|WS_BORDER)||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
AfxMessageBox("Status Bar not created!", NULL, MB_OK );
}
CRect rect;
this->GetWindowRect(&rect);
m_wndStatusBar.MoveWindow(2,rect.bottom-GetSystemMetrics(SM_CYSIZE)-27,rect.Width()-4,20);
m_wndStatusBar.ShowWindow(SW_SHOW);
m_wndStatusBar.SetWindowText("Ready");
-----------------------------------------------------------
把上面代码加在OnInitDialog里,注意:m_wndStatusBar变量的声明语句CStatusBar m_wndStatusBar;要放在你的对话框类C****Dlg中才行。
从注册表中读取cpu的频率:
读取 ~MHz 这个键值 ,记住那键前有个~别忘了,在注册表的HKEY_LOCAL_MACHINE//Hardware//Description//System//CentralProcessor//0 //0 为第一个cpu Hardware//Description//System//CentralProcessor//1 //1 为第二个cpu 得到cpu的数量,摘自:http://community.csdn.net/Expert/topic/4635/4635246.xml?temp=.7182123
-----------------------------------------------------------------------
SYSTEM_INFO siSysInfo;
GetSystemInfo(&siSysInfo);
printf(" Number of processors: %u/n", siSysInfo.dwNumberOfProcessors);
我的程序知道一个应用程序的句柄,如何使该应用程序得到焦点:http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=192872
---------------------------------------------------------------
if(::GetForegroundWindow()!=m_MainWnd)
::SetForegroundWindow(m_MainWnd);
::SetFocus( m_MainWnd);
---------------------------------------------------------------
或:
------------------------------------
::ShowWindow(m_MainWnd, SW_SHOW);
::SetForegroundWindow(m_MainWnd);
------------------------------------
在对话框的标题栏上添加按钮:http://www.codeguru.com/Cpp/W-D/dislog/titlebar/article.php/c1897
判断当前线程的当前输入法是中文还是英文输入法(至于到底是哪种中文输入法我也不知道):
HKL hKl = GetKeyboardLayout(0); //这里0表示当前线程,要查指定线程的话可以用指定线程的标识符代替
if (ImmIsIME(hKl))
AfxMessageBox("当前是中文输入法。");
其它地区语言输入法的信息在MSDN中搜索:Table of Language Identifiers
-------------------------------------------------------------------------
动态创建静态控件并加载.bmp图片,先在对话框类中定义成员变量:
----------------------------------------------------
public:
CStatic m_pp; //这个是在对话框类中定义的
再:
CBitmap cb;
cb.LoadBitmap(IDB_BITMAP1);
m_pp.Create("",WS_CHILD|WS_VISIBLE|SS_BITMAP,CRect(10,10,200,200),this,101);
m_pp.SetBitmap((HBITMAP)cb);
把图片中某种指定色变成透明色,在对话框的OnPaint()中加入类似如下代码:
//CImage imgOriginal;
int XWitdh=imgOriginal.GetWidth();
int XHeight=imgOriginal.GetHeight();
COLORREF TransparentColor= RGB(0x00,0x00,0x00); //这里黑色变成透明色
CPaintDC dc(this);
imgOriginal.TransparentBlt(dc.m_hDC,0,0,XWitdh,XHeight,TransparentColor);
imgOriginal.StretchBlt(dc,0,0,imgOriginal.GetWidth()/2,imgOriginal.GetHeight()/2,SRCCOPY);
怎么修改MFC单文档程序的标题,经常有人在网上问这个问题,在C****App::InitInstance()的代码中加入一行就行了:
-----------------------------------------------------------
BOOL CJPGGifApp::InitInstance()
{
AfxEnableControlContainer();
...... //这里省略自动生成的代码
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText("我的标题"); //加入这一行就可以了,注意要加在ShowWindow和UpdateWindow的后面
return TRUE;
}
怎么使用双缓冲防闪烁:http://community.csdn.net/Expert/topic/4236/4236258.xml?temp=5.736941E-02
鼠标左右键同时按下与鼠标与键盘同时按下的识别:http://www.vckbase.com/article/misc/0017.htm
玩过Windows的扫雷游戏吗?该游戏中就有一个同时按下鼠标左右键的操作,其实对同时按下鼠标左右键的判断并不复杂,判断方法与判断鼠标按键是否与Ctrl和Shift同时按下的方法相同,这里要用到鼠标消息中的wparam项,其中含有我们想要的几个按键的状态。定义如下:
(1)MK_CONTROL:Ctrl键按下时置1;
(2)MK_LBUTTON:鼠标左键按下时置1;
(3)MK_MBUTTON:鼠标中键按下时置1;
(4)MK_RBUTTON:鼠标右键按下时置1;
(5)MK_SHIFT:Shift键按下时置1。
通过判断这几个标志位可以得到同时按下的几个键的状态,从而判断是否有其它键同时按下。
让编译器忽略某种警告:
--------------------------------
#pragma warning (disable : 4101)
--------------------------------
上面的代码加上后编译器不会再出现warning C4101: 'i' : unreferenced local variable这样的警告了。
枚举网页各个元素,参考:
http://www.vckbase.com/document/viewdoc/?id=288
http://www.vckbase.com/document/viewdoc/?id=1446
rundll32.exe,这个程序很方便,用它可以调用任何 DLL 中的函数。你只要给它提供 DLL、函数名以及要传递的参数即可。Rundll32.exe 绝对多才多艺,你可以用它来关闭和重启 Windows,创建快捷方式以及启动控制面板程序。只要知道要调用的DLLs,一切都搞掂。你可以象下面这样用 rundll32.exe 从命令行打开一个 URL:
--------------------------------------------------------
rundll32.exe url.dll,FileProtocolHandler www.vckbase.com
--------------------------------------------------------
url.dll 中的函数 FileProtocolHandler 负责这个工作。
HDC===>CDC*
----------------------------------
HDC hdc=::GetWindowDC(this->m_hWnd); //获得窗口标题栏区域
CDC* pDC = CDC::FromHandle(hdc);
----------------------------------
CDC*===>HDC,可以通过CDC的操作符HDC()来实现:
------------------
HDC hdc=HDC(pDC); //或:HDC hdc=pDC->m_hdc;
------------------
操作状态栏,下面以在状态栏中显示鼠标当前坐标为例,代码如下:
-------------------------------------------------------------------------------------------
CMyView::OnMouseMove(UINT nFlag,CPoint point)
{
CClientDC dc(this);
CMainFrame *pFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CStatusBar *pStatusBar = (CStatusBar *)&pFrame->m_wndStatusBar;
CString str;
str.Format("x:%d,y:%d",point.x,point.y);
CSize size = dc.GetTextExtent(str); //得到文本所需的大小尺寸
int nIndex = pStatusBar->CommandToIndex(ID_INDICATOR_MOUSEPOS);
pStatusBar->SetPaneInfo(nIndex,ID_INDICATOR_MOUSEPOS,SBPS_NORMAL,size.cx); //按文本所需的宽度设置状态栏宽度
pStatusBar->SetPaneText(nIndex,str);
GetDeviceCaps,一个可得到很多关于指定设备的具体信息的函数
注册表中:HKEY_CURRENT_USER/KeyboardLayout/preload分支下分别有输入法对应的1、2、3、4几个主键,其键值一一对应已安装的输入法,如:1的键值00000409是英文输入法,知道具体输入法和键值的对应关系后,我们可以根据得到的键值判断用户的当前输入法了。
设置对话框的背景色的简单方法,其实只要在CWinapp的InitInstance的里面添加一行代码就行了:
---------------------------------------------------------
BOOL CBOOKApp::InitInstance()
{
AfxEnableControlContainer();
SetDialogBkColor(RGB(213,240,227),RGB(173,7,95)); //添加这行,前者为背景色,后者为前景色
.....
}
CView::OnMouseMove(nFlags, point);
}
显示gif动画表情的CRechEdit控件:http://lzzqqq.blogchina.com/2819759.html
单文档程序,如何使程序窗口一开始就固定在某一尺寸:PreCreateWindow中指定大小.可以去掉框架窗口的WS_THICKFRAME风格来使窗口不可改变大小,可以选择性的去掉WS_MAXIMIZEBO风格。也可以处理WM_GETMINMAXINFO消息来限制视图的大小。
CSpinButtonCtrl:http://www.ruanxun.com/HArticle78020.aspx
限制用户调整窗口的最大、最小尺寸,在窗口的WM_GETMINMAXINFO消息响应函数中处理,如:
void CQQDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
lpMMI->ptMinTrackSize.x=200; //限制最小宽度,单位为像素,下同
lpMMI->ptMinTrackSize.y=400; //限制最小高度
lpMMI->ptMaxTrackSize.x=250; //限制最大宽度
lpMMI->ptMaxTrackSize.y=500; //限制最大高度
CDialog::OnGetMinMaxInfo(lpMMI);
}
获取桌面所有图标的标题,代码示范了如何使用VirtualAlloc(),WriteProcessMemory() 和 ReadProcessMemory() 在不同的进程中分配内存。用Windows的消息获得图标的名称:
下载源码:http://www.vckbase.com/code/listcode.asp?mclsid=1&sclsid=101&page=6
一台机器可能有不止一个CD-ROM驱动器。现在CD-ROM已经是PC机的标准配置,此外再装个可擦写的光盘驱动,甚至是DVD都是很常见的事情。不管一台机器上装多少个不同的驱动器,如何找到它们呢?下载源码:http://www.vckbase.com/code/listcode.asp?mclsid=1&sclsid=101&page=6
做一个类似文件快捷方式中查找目标的功能,Net 2003中的MSDN,找到了可以实现该功能的API,SHOpenFolderAndSelectItems()函数.....本程序可以调用Explore打开指定文件夹,并把指定文件置为选定状态,下载源码:http://www.vckbase.com/code/listcode.asp?mclsid=1&sclsid=101
字符串转为Unicode:
-----------------------------------------------------------------
WCHAR wsz[MAX_PATH];
CString str="字符串";
#ifdef _UNICODE
wcscpy(wsz, str); //如果工程支持Unicode的话用wcscpy函数
#else
//工程不支持的话用MultiByteToWideChar函数转换
MultiByteToWideChar(CP_ACP, 0, str, -1, wsz, MAX_PATH);
#endif
-----------------------------------------------------------------
也可以用c的函数库的函数:
mbtowc 转一个字符
mbstowcs 转字符串
设置CListCtrl控件图标间距离的方法:CListCtrl::SetIconSpacing
设置层叠窗口的透明色函数:SetLayeredWindowAttributes,部分代码参考:
-------------------------------------------------------------------------
SetWindowLong(this->m_hWnd,GWL_EXSTYLE,GetWindowLong(this->m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED);
HWND hWnd=this->m_hWnd;
typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
PSLWA pSetLayeredWindowAttributes;
HMODULE hDLL = LoadLibrary ("user32");
pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,"SetLayeredWindowAttributes");
if (pSetLayeredWindowAttributes != NULL)
{
pSetLayeredWindowAttributes (hWnd,0,20,LWA_ALPHA);
}
FreeLibrary(hDLL);
关于滚动条方面的,GetScrollInfo获得滚动条位置信息:
------------------------------------
SCROLLINFO si;
ZeroMemory(&si, sizeof(si));
si.cbSize = sizeof(si);
si.fMask = SIF_TRACKPOS;
// Call GetScrollInfo to get current tracking position in si.nTrackPos
GetScrollInfo(hwnd, SB_HORZ, &si);
-----------------------------------
让滚动条滚动需要发送相应的WM_VSCROLL和WM_HSCROLL消息:
SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ;
SetScrollInfo函数改变滚动条的位置。
切换到软键盘:call ImmSetConversionStatus with IME_CMODE_SOFTKBD
用SetVolumeLabel函数修改U盘卷标时据说windows会刷新里面的内容。
基于对话框的MFC程序想要具有打印功能:http://community.csdn.net/Expert/topic/4557/4557847.xml?temp=.5908472
打开那个标题为"打开方式..."的对话框来选择程序:
WinExec("rundll32.exe shell32.dll,OpenAs_RunDLLpath/filename",SW_RESTORE);
如何屏蔽主窗口的最大化按钮,并让其自动最小化:http://community.csdn.net/Expert/topic/4563/4563807.xml?temp=.9465906
从立体声的wave文件中分别提出左声道和右声道的声音数据,实现音频文件的播放——单声道录音、立体声录音并保存为.wav文件,以及VC.NET简单实现GIF动画:
http://www.vckbase.com/code/listcode.asp?mclsid=7
拖动一个没有标题栏的窗口:
void CMyControl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
UNUSED_ALWAYS(nFlags);
if (!(GetWindowLong(m_hWnd, GWL_STYLE) & WS_CHILD))
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
else
GetParent()->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
}
用指定字体在dc中写字:
-------------------------------------------------------
HDC hdc = ::GetDC(NULL);
HFONT hfont,holdfont;
hfont = (HFONT)GetStockObject(OEM_FIXED_FONT);
holdfont = (HFONT)SelectObject(hdc,hfont);
TextOut(hdc,10,50,"/1/2/3/4",8);
SelectObject(hdc,holdfont);
DeleteDC(hdc);
桌面主题更改的消息:WM_THEMECHANGED
修改菜单项的名称:
CMenu *pMenu = AfxGetMainWnd()->GetMenu()->GetSubMenu(0);
pMenu->ModifyMenu(0,MF_BYPOSITION,0,"Test");
__LINE__表示本行代码在程序中第几行,同样:__FILE__表示当前文件的全路径
----------------------------------
CString str;
str.Format("Line is %d", __LINE__); //指这行
AfxMessageBox(str);
一直以来,想实现窗口透明程度不同,或局部透明,局部不透明,但这也只是梦想,下面这个函数看来可以让我们梦想成真:UpdateLayeredWindow
LOGFONT各成员的意义:
LOGFONT lf;
lf.lfHeight=-80; //字体字符的高度
lf.lfWidth=0; //字符平均宽度
lf.lfEscapement=45; //文本行逆时针旋转45度
lf.lfOrientation=0; //字符角度
lf.lfWeight=FW_HEAVY; //字符的粗细度
lf.lfItalic=FALSE; //倾斜
lf.lfUnderline=FALSE; //下划线
lf.lfStrikeOut=FALSE; //删除线
lf.lfCharSet=GB2312_CHARSET; //中文字符集
lf.lfOutPrecision=OUT_STROKE_PRECIS; //字体输出结果和要求的匹配程度
lf.lfClipPrecision=CLIP_STROKE_PRECIS; //如何裁剪落于裁剪区之外的字符
lf.lfQuality=DRAFT_QUALITY; //字体属性匹配的精确程度
lf.lfPitchAndFamily=VARIABLE_PITCH | FF_MODERN; //字体间距和字体族
strcpy(lf.lfFaceName,"楷体_GB2312"); //楷体
m_font.CreateFontIndirect(&lf); //m_font为类的成员变量:CFont m_font;
去除F1的帮助功能,重载WM_HELPINFO消息:
------------------------------------------------------
BOOL CYourdlgDlg::OnHelpInfo(HELPINFO* pHelpInfo)
{
return TRUE;//CDialog::OnHelpInfo(pHelpInfo);
}