子级分类:
C++/MFC基础
Windows界面
网络与通信
图形图象处理
系统通信
数据库
文件系统
硬件/系统调用
组件技术
其它技术
 |
关于遍历目录的问题求救!~
|
|
| |
| 我是个初学者,请给我讲解的详细一些。谢谢了。 我从网上找了个 “遍历目录查找文件”的例子,照着做了一个,编译后在没有pagefile.sys的目录下查找文件运行很正常,一旦在有pagefile.sys的目录下(如:c:\)查找文件,就出现窗口闪一下就消失了。
我是个初学者,请给我讲解的详细一些。谢谢了。
一下是代码:
void CSearchDlg::OnButtonSearch()
{
// TODO: Add your control notification handler code here
char szFilename[80];
//字符串szFilename表示要查找的文件名
strcpy(szFilename,"RamCleaner.exe");
_chdir("d:\\disktop_bak\\"); //进入要查找的路径(也可以是某一具体的目录)
//查找文件,如果查到则显示文件的路径全名
Search_Directory(szFilename);
//CsearchDlg类的一个成员函数
MessageBox("查找文件完毕.");
//显示查找完毕的信息
}
void CSearchDlg::Search_Directory(char *szFilename)
{
lo ...
|
|
| 作者:不祥 ymchinabye张贴于2004-09-02 14:59:47.0,共阅读2433次,回复1次 |
|
|
 |
判断某个URL是否有效
|
|
| |
| bool CUtil::IsReachableURL(CString sURL)
{
CInternetSession Session;
CHttpFile * pFile;
try
{
pFile = (CHttpFile *) Session.OpenURL(sURL);
}
catch (CException * e)
{
e->Delete();
pFile = NULL;
}
return (pFile != NULL);
}
|
|
| 作者:不祥 bluejoe张贴于2004-03-10 14:56:27.0,共阅读2037次,回复2次 |
|
|
 |
如何在对话框中加入状态栏[2]加强你的状态栏
|
|
| |
| 1.修改状态栏背景色
OnInitDialog 里面加 m_bar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));
2.时间显示
OnInitDialog 里面加 SetTimer(100,1000,NULL);
WM_TIMER 里面
if(nIDEvent==100)
{
CTime t1;
t1=CTime::GetCurrentTime();
m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));
}
CDialog::OnTimer(nIDEvent);
3.显示鼠标坐标
void CDlgStatusBarDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CString s;
s.Format("X=%d Y=%d",point.x,point.y);
m_bar.SetPaneText(0,s);
CDialog::OnMouseMove(nFlags, point);
}
要看前面一片文章哦
|
|
| 作者:不祥 Bccv张贴于2004-04-20 11:54:48.0,共阅读2901次,回复1次 |
|
|
 |
CListCtrl的item checked 或unchecked时的消息响应
|
|
| |
| void CListDlg::OnItemchangedlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)
return; // No change
BOOL bPrevState = (BOOL)(((pNMListView->uOldState &
LVIS_STATEIMAGEMASK)>>12)-1); // Old check box state
if (bPrevState < 0) // On startup there's no previous state
bPrevState = 0; // so assign as false (unchecked)
// New check box state
BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1);
if (bChecked < 0) // On n ...
|
|
| 作者:不祥 jerry张贴于2004-05-27 16:41:30.0,共阅读2896次,回复0次 |
|
|
 |
给IE窗口的Input框右键菜单加入新的功能
|
|
| |
| 部分内容需要参考上面的,为Edit框右键菜单添加新项
和设置Edit窗口一样,也需要设置一个窗口过程钩子来截获WM_CONTEXTMENU消息,不过设置的窗口过程有所不同。新的窗口过程如下:
LRESULT CALLBACK IEWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HOOKSHARED *hkShared;
HANDLE hMapObject;
WNDPROC oldWndProc = (WNDPROC)::GetProp(hWnd, ADPISA_oldProc);
hkShared = HooKGetSharedMem(&hMapObject);
if( uMsg == hkShared->uIEDoPaste )
{
POINT pt;
pt.y = HIWORD( lParam );
pt.x = LOWORD( lParam );
IEDoPaste(hWnd,pt);
}
HooKReleaseSharedMem(hkShared,hMapObject);
switch(uMsg)
{
case WM_CONTEXTMENU:
{
// 在右键弹出时,判断是否为Input框,主要函数GetD ...
|
|
| 作者:不祥 ISeekYou张贴于2004-05-21 21:46:37.0,共阅读2546次,回复0次 |
|
|
 |
给Edit编辑窗口的右键菜单加入新的功能
|
|
| |
| 代码内容来自于曾经做过的一个个人电脑安全安全处理助理软件,其中有项功能,就是给正在编辑的窗口内容加密,加密的功能放在右键菜单中调用,呵呵。里面有些用到的结构函数并没有列出来,代码只能大致给出思路首先需要安装一个窗口过程钩子
g_hPROCHook=SetWindowsHookEx(WH_CALLWNDPROC, GetMsgProc, g_hinstDll, 0);
窗口过程主要是在截获到 WM_CONTEXTMENU 消息时,判断当前窗口是否为Edit框, 若是的话,保存原窗口过程,设置新的窗口过程为NormalWndProc。
LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT* pStruct = (CWPSTRUCT*)lParam;
HOOKSHARED *hkShared;
HHOOK hProcHook;
HANDLE hMapObject;
hkShared=HooKGetSharedMem(&hMapObject);
hProcHook=hkShared->g_hPROCHook;
if (nCode == HC_ACTION)
{
if (pStruct->message != WM_CONT ...
|
|
| 作者:不祥 ISeekYou张贴于2004-05-21 21:24:50.0,共阅读2549次,回复0次 |
|
|
 |
云朵生成算法
|
|
| |
| 函数用来生成黑白色的云朵.该函数生成该图的一个象素的灰度值
参数说明:
int x, int y: 云朵图对应的象素位置
int x0,int y0,float FX,float FY,float Ci,float Cj,float T0,float K:用来调整云朵亮度、形状、位置等的参数。初始化一般如下
Ci = 6.0f;
FX = 1.0f / 120;
FY = 1.0f / 240;
fK = 1.0f;
T0 = 0.0f;
Cj = 6.0f;
x0 = 30;
y0 = 10;
float CGenerateCloudDoc::GenerateCloud(int x, int y,int x0,int y0,float FX,float FY,float Ci,float Cj,float T0,float K)
{
float LX = 0,LY = 0,T = 0,T1 = 0,T2 = 0,FX1 = 0,FY1 = 0;
for(int i=1; i<5; i++)
{
if(i==1)
{
FX1 = FX;
FY1 = FY;
}
LX = sqrt(i) * FX1;
...
|
|
| 作者:不祥 ISeekYou张贴于2004-05-21 20:41:13.0,共阅读2209次,回复0次 |
|
|
 |
Faq:如何遍历整个目录
|
|
| |
|
提问用户
主题
提问状态
yugiant(小鱼儿)
如何遍历整个目录
已解决
问题解答归纳:
BOOL DeleteCurFolder(CString folder)
/*****************************************************************
作用:清空文件夹,预防可能产生的bug %
返回值:bool true-success,false-fail %
关键函数:CFildFind::FindFile %
关键变量:folder 对应文件夹 %
作者:张奇 %
修改时间:2002-10-10 ...
|
|
| 作者:不祥 xler张贴于2004-05-21 10:19:39.0,共阅读2826次,回复0次 |
|
|
 |
解高斯方程组算法(自己写的和清华教材上的比较)
|
|
| |
| 重点是方程组类Linequ的方法 Solve(),解法一是清华教材《C++语言程序设计》郑莉等编的算法,好像有错(反正测试计算出来试错的main()为测试码),且不怎么明白!于是自己写了个,自己命名为逐行消去法!请大家看看!呵呵写得不好请帮忙改进!// Linqu.h
//Begin of file Linequ.h
#ifndef LINQU_H
#define LINQU_H
#include <iostream.h>
#include <math.h>
class Matrix //The definition of basic class
{
public: //Interface for outside
Matrix(int dim=2); //Constructor
~Matrix(); //Destructor
void setMatrix(double* rmatr); //Initialize Matrix
void printM(); //Display Matrix
protected:
int index; ...
|
|
| 作者:不祥 barco张贴于2004-05-17 23:36:27.0,共阅读2771次,回复3次 |
|
|
 |
实现Dialog的Menu中最近使用文件机制
|
|
| |
| l 如何启动Dialog的Command Update机制?
重载Cdialog的WM_INITMENUPOPUP, 修改使用 void CFrameWnd::OnInitMenuPopup (CMenu* pMenu, UINT, BOOL bSysMenu)
中的source code,启动Command Update机制
l 如何实现Dialog的Menu中最近使用文件机制?
最近使用文件机制是用CWinApp的Command Update机制和以下两个消息处理的:
ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu)
ON_COMMAND_EX_RANGE(ID_FILE_MRU_FILE1,ID_FILE_MRU_FILE16, OnOpenRecentFile)
void CWinApp::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
ASSERT_VALID(this);
if (m_pRecentFileList == NULL) // no MRU files
pCmdUI->Enable(FALSE);
...
|
|
| 作者:不祥 jerry张贴于2004-05-11 20:37:18.0,共阅读2488次,回复0次 |
|
|
 |
两种关机代码的比较
|
|
| |
| InitiateSystemShutdown(NULL,"关机",10,TRUE,FALSE) //这个函数不能直接掐断电源,但是可以cancel掉关机指令
ExitWindowsEx(EWX_POWEROFF | EWX_FORCE ,0) //直接强制关机,掐断电源
|
|
| 作者:不祥 xler张贴于2004-05-11 18:03:37.0,共阅读1943次,回复0次 |
|
|
 |
系统关机代码
|
|
| |
| BOOL ShutDown()
{
OSVERSIONINFO osVI;
HANDLE hToken=NULL;
osVI.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if(GetVersionEx(&osVI))
{
switch(osVI.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
case VER_PLATFORM_WIN32_WINDOWS:
ExitWindowsEx(EWX_POWEROFF,0);
break;
case VER_PLATFORM_WIN32_NT:
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES, &hToken))
{
SetPrivilege(hToken,SE_SHUTDOWN_NAME,TRUE);
if(!ExitWindowsEx(EWX_ ...
|
|
| 作者:不祥 xler张贴于2004-05-11 18:01:29.0,共阅读2364次,回复0次 |
|
|
 |
系统重起代码
|
|
| |
| HINSTANCE hShell32 = ::LoadLibrary("shell32.dll");
if(hShell32)
{
typedef int (WINAPI *RestartDialog)(HWND hwndOwner,LPCSTR lpstrReason,UINT uFlags);
RestartDialog SHRestartWindowsDialog =(RestartDialog)GetProcAddress(hShell32, MAKEINTRESOURCE(59));
if(SHRestartWindowsDialog)
{
(SHRestartWindowsDialog)(GetDesktopWindow(),NULL,EWX_REBOOT);
}
}
|
|
| 作者:不祥 xler张贴于2004-05-11 17:47:30.0,共阅读2235次,回复0次 |
|
|
 |
win2000锁定屏幕调用代码
|
|
| |
| 对于其他os,不知道有没有用WinExec("rundll32.exe user32.dll,LockWorkStation",SW_HIDE);
|
|
| 作者:不祥 xler张贴于2004-05-11 17:37:05.0,共阅读2188次,回复0次 |
|
|
 |
如何实现双击程序托盘图标弹出或者弹入动画效果
|
|
| |
| 使用API:
BOOL WINAPI DrawAnimatedRects(HWND hwnd, int idAni, CONST RECT * lprcFrom, CONST RECT * lprcTo);
Eg:
Bool m_bShow = false; //区分弹出还是弹入
BOOL WinAnimation()
{
CWnd * pWnd=FindWindow("Shell_TrayWnd",NULL); //windows底部信息提示窗口
if(!pWnd)return FALSE;
CRect rectSur,rectDst;
GetWindowRect(&rectSur); //本窗口大小,用户自己处理
EnumChildWindows(pWnd->GetSafeHwnd(),My_Find,(LPARAM)&rectDst); //寻找托盘
if(m_bShow)DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,&rectSur,&rectDst); //弹入
else DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,&rectDst,&rectSur); //弹出
re ...
|
|
| 作者:不祥 xler张贴于2004-05-11 14:47:50.0,共阅读2338次,回复0次 |
|
|
 |
分割“品”字型的视图
|
|
| |
| BOOL CBrowserFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
m_Splitter1.CreateStatic(this,1,2);
m_Splitter2.CreateStatic(&m_Splitter1,2,1,WS_CHILD|WS_VISIBLE,m_Splitter1.IdFromRowCol(0,1));
m_Splitter1.CreateView(0,0,RUNTIME_CLASS(CBrowserFolder),CSize(200,0),pContext);
m_Splitter2.CreateView(0,0,RUNTIME_CLASS(CLogoBar),CSize(0,80),pContext);
m_Splitter2.CreateView(1,0,RUNTIME_CLASS(CBrowserList),CSize(0,0),pContext);
return CFrameWnd::OnCreateClient(lpcs,pContext);
}
|
|
| 作者:不祥 bluejoe张贴于2004-04-30 10:16:05.0,共阅读1906次,回复0次 |
|
|
 |
GetLastError()对应的原因
|
|
| |
| void DisplayError(DWORD dwError)
{
LPVOID pv;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR)&pv,
0,
NULL);
MessageBox(NULL, (LPTSTR)pv, "Error", MB_ICONHAND);
LocalFree(pv);
}
这样用:
DisplayError(WSAGetLastError());
可以看到错误的原因!
|
|
| 作者:不祥 jerry张贴于2004-04-24 22:31:46.0,共阅读2357次,回复0次 |
|
|
 |
使用QueryPerformanceCount的小例子
|
|
| |
| LARGE_INTEGER liCount1;
LARGE_INTEGER liCount2;
LARGE_INTEGER liFrequency;
double fSeconds;
//你的其他代码...
//时间点1(例如按某个button的时间)
QueryPerformanceCounter(&liCount1);
//你的其他代码...
//时间点2(例如某事件完成的时间)
QueryPerformanceCounter(&liCount2);
QueryPerformanceFrequency(&liFrequency);//每秒记数
fSeconds=(double)(liCount2.QuadPart -liCount1.QuadPart )/(double)liFrequency.QuadPart; //时间点2和时间点1之间的精确秒数
|
|
| 作者:不祥 ycr40张贴于2004-04-20 17:21:50.0,共阅读2296次,回复1次 |
|
|
 |
如何在对话框中加入状态栏[1]
|
|
| |
| 1.ID_INDICATOR_NISH and ID_INDICATOR_TIME这个两个加到 symbol 里去,同样的加到 string table 里去
2.在你的 Dialog 类里面加个 CStatusBar m_bar;
3.在实现文件开头加上
static UINT BASED_CODE indicators[] =
{
ID_INDICATOR_NISH,
ID_INDICATOR_TIME
};
4.OnInitDialog 里面加上
m_bar.Create(this); //We create the status bar
m_bar.SetIndicators(indicators,2); //Set the number of panes
CRect rect;
GetClientRect(&rect);
//Size the two panes
m_bar.SetPaneInfo(0,ID_INDICATOR_NISH,
SBPS_NORMAL,rect.Width()-100);
m_bar.SetPaneInfo(1,ID_INDICATOR_TIME,SBPS_STRETCH ,0);
//This is where we actually draw ...
|
|
| 作者:不祥 Bccv张贴于2004-04-20 11:46:50.0,共阅读2255次,回复0次 |
|
|
 |
异步读写的简单串口类
|
|
| |
| // Serial.h
#ifndef __SERIAL_H__
#define __SERIAL_H__
#define FC_DTRDSR 0x01
#define FC_RTSCTS 0x02
#define FC_XONXOFF 0x04
#define ASCII_BEL 0x07
#define ASCII_BS 0x08
#define ASCII_LF 0x0A
#define ASCII_CR 0x0D
#define ASCII_XON 0x11
#define ASCII_XOFF 0x13
class CSerial
{
public:
CSerial();
~CSerial();
BOOL Open( int nPort = 2, int nBaud = 9600 );
BOOL Close( void );
int ReadData( void *, int );
int SendData( const char *, int );
int ReadDataWaiting( void );
BOOL IsOpened( void ){ return( m_b ...
|
|
| 作者:不祥 bruticus张贴于2004-04-19 12:51:38.0,共阅读2862次,回复1次 |
|
|
|