
编程技巧
文章平均质量分 54
chunyou128
这个作者很懒,什么都没留下…
展开
-
word文档转成网页形式!
#include "stdafx.h"#import "D:/Program Files/Microsoft Office/OFFICE11/MSWORD.OLB" named_guids raw_interfaces_only rename("ExitWindows", "wordExitWindows") void wordtohtml() {原创 2009-01-14 23:24:00 · 1440 阅读 · 0 评论 -
两种方法点击客户区,移动对话框
<br />1.<br />void CMoveDlg::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y)); CDialog::OnLButtonDown(nFlags, point);}<br />2.<br />LRESULT CMoveDlg::OnN原创 2011-05-03 23:18:00 · 621 阅读 · 0 评论 -
对话框居中
CRect rc; CRect thisRect; GetWindowRect(&thisRect); SystemParametersInfo(SPI_GETWORKAREA,0,&rc,0); m_rcClient.left = ((rc.Wid原创 2011-07-25 09:13:14 · 394 阅读 · 0 评论 -
扩展金山提示框,使之带颜色
1.提示过多时,有时需要颜色,便于用户查看。2.调查发现CBkRichText有对颜色的设置,在此可重用。 BOOL SetRichText(UINT uItemID, LPCSTR lpszXml) { T* pT = static_c原创 2011-08-01 15:36:58 · 2325 阅读 · 0 评论 -
请问:金山卫士这个等待的效果怎么做出来的?
1.首先,要定义计时器 XX.h void OnTimer(UINT_PTR nIDEvent);...BEGIN_MSG_MAP_EX(CUpdateListDlg) MSG_WM_TIMER(OnTimer)END_MSG_MAP()2.原创 2011-07-29 17:23:36 · 3012 阅读 · 0 评论 -
扩展CEdit实现文件的拖动。
很早之前,写测试的例子的时候,会把路径写死,现在感觉真傻。 现在我最起码能想到3中方法。 1.CEdit GetWindowText(手动拷贝路径) 2.SHBrowseForFolder(让用户浏览) 3.支持文件拖动(用原创 2011-08-31 16:17:10 · 2420 阅读 · 0 评论 -
创建桌面快捷方式
BOOL CreateDesktopShotCut( CString strName,//在桌面显示的名称 CString strSourcePath)//文件绝对路径名称{ if(FAILED(CoInitialize(NULL))) return F原创 2011-08-03 21:26:30 · 2098 阅读 · 0 评论 -
事件对象。
在用多线程编程时,往往会要求某线程执行完毕以后,再执行其他线程。或者要求对公共资源进行保护。这时我们的选择还是很多的:关键代码段(CriticalSection)、互斥体(mutex)、事件。你可以使用MFC封装的CEvent或者使用Windows API CreateEvent原创 2011-09-02 13:20:47 · 2069 阅读 · 0 评论 -
扩展金山提示框,使之带颜色(二)
动态提示框最好能有三个功能:1.动态地改变大小 2.支持多种颜色 3.能有个确定按钮1.用xml给提示框来个布局。 %str1%原创 2011-08-06 21:29:32 · 2402 阅读 · 0 评论 -
两个对象之间很好的交互方法!
类或对象之间的建立联系的方法很多:如(1)用组合的方式,一个类做为另一个类的成员变量。(2)两个类都作为基类的成员,通过基类调用另一个类。(3)想办法捞到另一个类的句柄,给另一个类发消息。(4)还有,受人诟病的 全局变量也是一种方式呀。我们今天要 讨论的是通过一个 中间类 来实现原创 2011-08-07 14:41:37 · 2530 阅读 · 0 评论 -
异常牛X的Policy
policy是规定好的 规章制度之类的一般是没有疑问要按照执行的 类似政府策略 或者公司的故障守则,strategy有点类似于计策 比如说我想开办一个公司的经营策略 营销策略之类的。今天我们讨论的是loki库中的policy,和设计模式中的strategy是要区别开来的。原创 2011-08-07 22:26:20 · 2201 阅读 · 0 评论 -
用map是您的程序更清晰!
当您遇到一大堆用数字串对应的规则时,记这些字符串有时会让人很头痛。没关系,用 枚举+map。1.定义一些枚举。enum UpdateKind{ enCommenFile = 1, enCom, // enDelCommenFile,//原创 2011-08-13 22:11:24 · 2310 阅读 · 0 评论 -
我想写个截图程序
手把手VC截图小工具,附源码一直都想写个截图程序,觉得蛮有意思的。看到网上这位兄弟的思路蛮清晰的,就自己跟着做下,并记录了流程,做个备份。1.首先是构建个基于对话框的程序。在OnInitDialog中注册热键,并隐藏当前对话框。在资源里把对话框设为无边框。原创 2011-08-14 21:18:40 · 4000 阅读 · 1 评论 -
Rijndaels的使用
高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 1.加密的调用方法bool CGlo原创 2011-09-19 09:21:42 · 4077 阅读 · 0 评论 -
设置windows消息钩子
<br />#include "stdafx.h"#include "wpkey.h"#include <atlbase.h>#include <oleacc.h>#include <winuser.h>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifSHELLEXECUTEINFO sec;HHOOK hook;原创 2011-04-28 22:27:00 · 631 阅读 · 0 评论 -
互斥体单实例
<br />BOOL CMutexApp::InitInstance(){ ... m_handMutex = CreateMutex(NULL, TRUE, _T("互斥体单实例")); if (m_handMutex) { if (ERROR_ALREADY_EXISTS == GetLastError()) { AfxMessageBox(_T("实例已经运行!")); ReleaseMutex(m_handMutex); return FAL原创 2011-04-28 10:46:00 · 569 阅读 · 0 评论 -
获取Exe所在文件夹
<br />获取Exe所在文件夹<br /> TCHAR szPath[MAX_PATH]; memset(szPath, 0x00, sizeof(szPath)); GetModuleFileName(NULL, szPath, sizeof(szPath)); CString sPath = szPath; int nPos = sPath.ReverseFind('//'); sPath = sPath.Mid(0, nPos);原创 2011-04-27 12:50:00 · 522 阅读 · 0 评论 -
vc 加托盘
BOOL CAlertDlg::OnInitDialog(){... NOTIFYICONDATA nd; nd.cbSize = sizeof (NOTIFYICONDATA); nd.hWnd = m_hWnd;// nd.uID = IDI_ICON; nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;// nd.uCallbackMessage =原创 2009-12-02 22:27:00 · 375 阅读 · 0 评论 -
利用SubclassDlgItem函数动态连接控件和控件对象
要在程序中创建新设计的控件,显然不能用自动创建的办法,因为对话框模板对新控件的特性一无所知.程序可以用手工方法创建控件,在调用派生类的Create函数时,派生类会调用基类的Create函数创建控件.用Create函数创建控件是一件比较麻烦的工作,程序需要为函数指定一大堆的控件风格以及控件的坐标和ID.特别是控件的坐标,没有经验的程序员很难确切地安排控件的位置和大小,往往需要反复调整.利用MFC的C转载 2009-12-04 13:40:00 · 526 阅读 · 0 评论 -
分割对话框
http://www.vckbase.com/english/code/splitter/cxysplitter.shtml.htmxySplitterWnd.hxySplitterWnd.cpp原创 2010-06-29 17:18:00 · 597 阅读 · 0 评论 -
窗口的移动!
m_btnLogin.GetWindowRect(rt); rt.OffsetRect(-20,25); ScreenToClient(rt); m_btnLogin.MoveWindow(rt); 思路非常简单。如:对话框中的按钮就是一个窗口。(1)获得此按钮的窗口坐标 (2)让此按钮所在位置的矩形相对窗口坐标做个移动 (3)把矩形再由窗口坐标转换成客户区坐标 (4)把按钮移动到上面所操作的矩形的位置 具体如下原创 2011-03-08 10:19:00 · 458 阅读 · 0 评论 -
VC之ADO访问类
Provider=SQLOLEDB.1 ------打开数据库用oledb的方式连接Persist Security Info ----是否保存安全信息User ID-------------------用户名PassWord------------------密码Initial Catalog-----------数据库的名称或者数据库ip或者目录Data Source---------------数据源ADOConn.h// ADOConn.h: interface for the转载 2011-03-12 14:35:00 · 506 阅读 · 0 评论 -
VC简单日志类
此类可以实现大多数应用程序日志功能,可以每天创建一个Log文件,支持中文内容。LogFile.h头文件// LogFile.h: interface for the CLogFile class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_)转载 2011-03-18 22:38:00 · 923 阅读 · 0 评论 -
MFC中Console调试输出类
1:本类来源于CodeProject,本人稍加修改,使其使用更加方便。2:使用步骤 1:将该源文件加入到工程 2:在代码任意处调用CConsole::Output("...")调用来输出调试信息。 3:请记得在程序的某处关闭控制台以释放资源 如:在App:ExitInstance中调用 CConsole::Close();3:使用单例模式,_DEBUG选择编译。附代码:1 头文件:#if !defined(__CONSOLE_H_)#define __CONSOLE_H_#ifde转载 2011-03-19 09:21:00 · 1004 阅读 · 2 评论 -
获取程序运行是路径
<br />获取程序运行是路径<br />GetCurrRunPath(){ TCHAR szPath[MAX_PATH]; memset(szPath, 0x00, sizeof(szPath)); GetModuleFileName(NULL, szPath, sizeof(szPath)); CString strDir = szPath; int nPos = strDir.ReverseFind('//'); strDir = strDir.Mid(0, nPos)原创 2011-05-23 09:28:00 · 568 阅读 · 0 评论 -
把VC对话框设为半透明
在 OnInitDialog 中加入: SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst = LoadLibrary("User32.DLL"); if(hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,原创 2011-04-08 14:52:00 · 1104 阅读 · 0 评论 -
vc 右下角弹出提示对话框
void XXXX::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if (nIDEvent == enTimerTIDlgAutoHide) { KillTimer(enTimerTIDlgAutoHide); this->ShowWindow(SW_HIDE); //SendMessage(WM_CLOSE); } if (nIDE原创 2011-04-21 15:20:00 · 2603 阅读 · 0 评论 -
发消息点击按钮
<br />void CTestClickDlg::OnBtnClk() { // TODO: Add your control notification handler code here MessageBox("我是被发消息达到点击效果的");}void CTestClickDlg::OnBtnMyclk() { // TODO: Add your control notification handler code here SendMessage(WM_COMMA原创 2011-04-21 17:48:00 · 529 阅读 · 0 评论 -
状态栏上加时间
<br />void CMainFrame::SetStatusBarTime(){ CString strTime = CTime::GetCurrentTime().Format("%Y:%m:%d %H:%M:%S"); CClientDC dc(this); CSize sz = dc.GetTextExtent(strTime); int nIndex = 0; nIndex = m_wndStatusBar.CommandToIndex(IDS_TIMER); m_原创 2011-04-21 17:56:00 · 383 阅读 · 0 评论 -
通过拖动对话框的任何地方来拖动对话框
<br />LRESULT CXXXDlg::OnNcHitTest(CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 ScreenToClient(&point); CRect rc; GetClientRect(&rc); if(rc.PtInRect(point)) { return HTCAPTION; } return CDialog::OnNcHitTest(point);}原创 2011-04-26 16:01:00 · 568 阅读 · 0 评论 -
换肤对话框的选中框。
1.先准备列表用的xml 2.定制memframeimage 相关类。class CBkMemoryFrameImage : public CBkMemoryImage{ BKOBJ_DECLARE_CLASS_NAME(CBkMemoryFrameImage, "memframeimage") CBkMemoryFrameIm转载 2011-10-25 21:06:10 · 2392 阅读 · 1 评论