《Visual C++.net实用编程百例》
清华大学出版社 TP312c cjF
古老却实用的mfc, 热热手~
四、移动文字
1.GetClientRect(&m_Rect):获取客户区窗口大小
2.输出文字 CDC *pDC;
pDC->SetTextColor(RGB(255,0,0));
pDC->TextOut(m_StartX,80,m_strText);
3.计时器:
(1)onTimer(nIDEvent) //每隔nIDEvent个千分之一秒调用一次该函数
(2)UINT_PTR SetTimer( //激活OnTimer
UINT_PTR nIDEvent, //id
UINT nElapse, //定时间隔
void (CALLBACK* lpfnTimer
)()
(3)KillTimer(nIDEvent) //终结OnTimer()调用
4.Invalidate():调用OnDraw()引起视图区重绘
五、椭圆窗口
1.int SetWindowRgn(HWND hWnd,HRGN hRgn,BOOL bRedraw);设置窗口区域
2.wm_NcHitTest消息:指定鼠标光标的移动
三十八、获取文件属性
1.Updatedata(true)取回dialog box 的data,Updatedata(false)初始化data;
2.CFileStatus类包含文件属性信息,由CFile::GetStatus(in m_strFileName,out status);获得
3.switch(expression )
{
Case constant-expression :…;break;
…….
}
三十九、读写ini文件
1.BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
2.DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
四十、读写注册表
1.创建键值(若存在则打开)
LONG RegCreateKey(
HKEY hKey,
LPCTSTR lpSubKey,
PHKEY phkResult
);
例:RegCreateKey(HKEY_LOCAL_MACHINE,"software//ZHAO//MyKey",&hKey);
2.设置键值
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
const BYTE* lpData,
DWORD cbData
);
3.打开某一特定键值
LONG RegOpenKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD ulOptions,
REGSAM samDesired,
PHKEY phkResult
);
4.查询,从打开的键中读取数据
LONG RegQueryValueEx(
HKEY hKey,
LPCTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
5.关闭键
LONG RegCloseKey(
HKEY hKey
);
四十一、关闭计算机
1.注销、关闭、待机、重启API函数ExitWindowsEx()
BOOL ExitWindowsEx(
UINT uFlags,
DWORD dwReason
);
uFlages:EWX_LOGOFF注销;EWX_POWEROFF待机;EWX_REBOOT重启;EWX_SHUTDOWN关机;
2.设置本地计算机名:BOOL SetComputerName(LPCTSTR lpComputerName);
获取本地计算机名:BOOL GetComputerName(LPCTSTR lpBuffer,LPDWORD nSize);
四十二、显示系统进程
1.list control控件的使用:
(1)增加一列:
int InsertColumn(
int nCol,
LPCTSTR lpszColumnHeading,
int nFormat = LVCFMT_LEFT,
int nWidth = -1,
int nSubItem = -1 );
(2)插入一行
int InsertItem(
int nItem,
LPCTSTR lpszItem );
(3)设置单元格内容:
BOOL SetItemText(
int nItem,
int nSubItem,
LPCTSTR lpszText );
2.系统信息头文件:tlhelp32.h
3.HANDLE snapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot],
TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
4.进程信息数据结构:PROCESSENTRY32
typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];
} PROCESSENTRY32,
*PPROCESSENTRY32;
5.获取第一个进程信息:
BOOL WINAPI Process32First(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);
获取下一个进程信息:
BOOL WINAPI Process32Next(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);
四十四、用CStdioFile类读写文件
CStdioFile派生自CFile,提供一种处理流式文件数据的机制,有两个函数:
1.构造函数:
CStdioFile( );
CStdioFile(
FILE* pOpenStream );
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags );
2.virtual void WriteString(LPCTSTR lpsz );
3.读取文件:
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax );
virtual BOOL ReadString(
CString& rString
);
四十六、获取系统环境变量
热键设置方法:
1.在程序初始化时注册:
BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk );
2.添加WM_HOTKEY消息处理函数
3.在OnDestroy()中注销热键:
BOOL UnregisterHotKey( HWND hWnd, int id);
4.激活窗口并前台执行:CWnd::SetForegroundWindow();