涉及成人内容,不喜勿视。天下的男人没一个好东西以下内容跟帖回复才能看到==============================我被QJ过==============================肚子里的孩子是无辜的以下内容跟帖回复才能看到==============================我不想做流产==============================你老公一直都很爱你以下内容跟帖回复才能看到==============================我昨天GY他上床,没成功==============================我不是很随便的女人以下内容跟帖回复才能看到==============================就买这点东西就想和我上床==============================我想过普通人的生活以下内容跟帖回复才能看到==============================我需要性生活==============================做女人怎么这么难以下内容跟帖回复才能看到==============================我要去靠卖身维生了==============================爹,女儿对不起你以下内容跟帖回复才能看到==============================我和仇人上床了,感觉很好==============================我的内心很孤独以下内容跟帖回复才能看到==============================今晚留下来吧==============================我也有七情六欲以下内容跟帖回复才能看到==============================七情尤指色情,六欲尤指性欲==============================我太轻信别人了以下内容跟帖回复才能看到==============================我被人骗奸了==============================还不是为了孩子以下内容跟帖回复才能看到==============================我改嫁了==============================瞧你那点出息以下内容跟帖回复才能看到==============================上床不行,干别的也不行==============================我也是个女人以下内容跟帖回复才能看到==============================我也有性欲==============================你不体谅女人以下内容跟帖回复才能看到==============================你上床时只知道自己享受==============================只有他对我好以下内容跟帖回复才能看到==============================只有他能满足我==============================你也算个男人以下内容跟帖回复才能看到==============================你阳萎又早泄==============================你不懂女人以下内容跟帖回复才能看到==============================你不掌握床上技巧==============================你那傻样以下内容跟帖回复才能看到==============================别慎着了,主动点呀==============================我真傻以下内容跟帖回复才能看到==============================做完了忘收钱了==============================
您对本贴的看法:鲜花[1] 臭蛋[0]
__________________________________向往悠闲的生活
2008/08/30
2008/08/29
2008/08/28
>>>c/c++编程资源收集<<<
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=program&Number=301304&page=0&view=collapsed&sb=5&o=all&fpart=
标签: Programming
c/c++常用资源
aix在线文档:
http://publib16.boulder.ibm.com/cgi-bin/ds_rslt#1
各种c/c++编译器
http://www.clipx.net/norton.php
UNIX Programming FAQ v1.37
http://www.erlenstar.demon.co.uk/unix/faq_toc.html
UNIX Programming FAQ 中文版 v0.1.0
http://www.linuxforum.net/books/upfaq/book1.htm
C++ Coding Standard
http://www.possibility.com/Cpp/CppCodingStandard.html
GNU编码标准
http://www.linuxforum.net/books/gcodestd.html
C/C++ Reference
http://www.cppreference.com/
C/C++
http://www.cplusplus.com/
C++ Standard Template Library
http://www.msoe.edu/eecs/ce/courseinfo/stl/
C Standard Library
http://www.infosys.utas.edu.au/info/documentation/C/CStdLib.html
GCC的主页
http://gcc.gnu.org
喜欢算法的朋友,这里有CLRS和TAOCP的讨论
http://online.ysu.edu.cn/personal/yyf/weitao/taocp/
http://online.ysu.edu.cn/personal/yyf/weitao/taocp/clrs.htm
RFC
http://www.rfc-editor.org/
SGI STL
http://www.sgi.com/tech/stl/
Blitz++,一个针对科学计算的C++ class library
http://www.oonumerics.org/blitz/
标签: Programming
C#操作文本文件(入门)收藏
C#操作文本文件(入门)收藏
| 旧一篇: Net下在线编辑器FCKeditor安装方法
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
///
/// C#操作文本文件的类
/// 程序(网站)所在目录:D:\Test
/// 操作的文本文件:D:\Test\file
///
public partial class _Default : System.Web.UI.Page
{
//在读取txt文件中的中文时出现乱码,
//解决办法:StreamReader sr = new StreamReader(fileName,Encoding.GetEncoding("gb2312"));
protected void Page_Load(object sender, EventArgs e)
{
#region C#读取文本文件 (乱码已解决)
{
string fileName = Server.MapPath(@"~\file") + @"\read.txt";
StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding("gb2312"));//以gb2312字符编码格式读取文本。
string str;
string result = "";
while ((str = sr.ReadLine()) != null)//读取每一行
{
result += str;
}
sr.Close();
sr.Dispose();
}
#endregion
#region C#写入文本文件
{
//string path = Server.MapPath(@".\file");//这两句等效。
//string path2 = Server.MapPath(@"~\file");
//CreateText():创建或打开一个文件用于写入 UTF-8 编码的文本。
StreamWriter rw = File.CreateText(Server.MapPath(@".\file") + @"\write.txt");
rw.WriteLine("你好"); //写入三行数据。
rw.WriteLine("hello");
rw.WriteLine("中国");
rw.Flush();
rw.Close();
rw.Dispose();
}
#endregion
#region 打开文本文件以进行读取。(读取中文出现乱码)
{
//OpenText():打开现有 UTF-8 编码文本文件以进行读取。
StreamReader sr = File.OpenText(Server.MapPath(@".\file") + @"\open.txt");
StringBuilder output = new StringBuilder();
string str;
while ((str = sr.ReadLine()) != null)
{
output.Append(str + "+");
}
string result = output.ToString();
sr.Close();
sr.Dispose();
}
#endregion
#region C#追加文本到现有文件
{
//File.AppendText(): 创建一个 StreamWriter,它将 UTF-8 编码文本追加到现有文件。
StreamWriter sw = File.AppendText(Server.MapPath(@".\file") + @"\append.txt");
sw.WriteLine("欢迎");
sw.WriteLine("来");
sw.WriteLine("中国");
sw.Flush();
sw.Close();
sw.Dispose();
}
#endregion
#region C#拷贝文件
{
string from, to;
from = Server.MapPath(@".\file") + @"\copyFrom.txt";
to = Server.MapPath(@".\file") + @"\copyTo.txt";
File.Copy(from, to, true);//true/false:是否允许改写目标文件。如果目标文件不存在,会自动创建。
}
#endregion
#region C#删除文件
{
string delFile = Server.MapPath(@".\file") + @"\delFile.txt";//要删除的文件路径
File.Delete(delFile);
}
#endregion
#region C#移动文件
{
//string From, To;
//From = Server.MapPath(".") + @"\MoveFrom.txt";
//To = Server.MapPath(@".\file") + @"\MoveFromTo.txt";
//File.Move(From, To);//移动并可重明名
}
#endregion
#region C#创建目录 // Directory - DirectoryInfo
{
DirectoryInfo d = Directory.CreateDirectory(Server.MapPath(@".\file") + @"\CreateDirectory");
//创建子目录
DirectoryInfo d1 = d.CreateSubdirectory("CreateDirectory1");
DirectoryInfo d2 = d1.CreateSubdirectory("CreateDirectory2");
//应用程序的当前工作目录:D:\Program Files\Microsoft Visual Studio 8\Common7\IDE
string cur = Directory.GetCurrentDirectory();
//将当前目录设为Server.MapPath(@".\file")
Directory.SetCurrentDirectory(Server.MapPath(@".\file"));
//(在当前工作目录)创建目录
DirectoryInfo d3 = Directory.CreateDirectory("sixAge2");
//创建目录
DirectoryInfo d4 = Directory.CreateDirectory(@"sixAge2\sixAge2_1");
//应用程序的当前工作目录
string cur1 = Directory.GetCurrentDirectory();
}
#endregion
}
}
注释:在D盘根目录下创建以Test明名的网站。。。
一些WINDOWapi的使用(转贴)收藏
一些WINDOWapi的使用(转贴)收藏
mciSendString("Set cdAudio door open wait",NULL,0,NULL);
二、关闭CD_ROM
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
三、关闭计算机
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
//Windows98,调用ExitWindowsEx()函数重新启动计算机
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
//关机、关闭电源等操作
// 退出前的一些处理程序
}
四、重启计算机
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
if(hInst != NULL)
{
//获得函数的地址并调用之
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
(*ShutDownDialog)(0);
}
五、枚举所有字体
LOGFONT lf;
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
strcpy(lf.lfFaceName,"");
CClientDC dc (this);
//Enumerate the font families
::EnumFontFamiliesEx((HDC) dc,&lf,
(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
//枚举函数
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
{
// Create a pointer to the dialog window
CDay7Dlg* pWnd = (CDay7Dlg*) lparam;
// add the font name to the list box
pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
// Return 1 to continue font enumeration
return 1;
}
其中m_ctlFontList是一个列表控件变量
六、一次只运行一个程序实例,如果已运行则退出
if( FindWindow(NULL,"程序标题")) exit(0);
七、得到当前鼠标所在位置
CPoint pt;
GetCursorPos(&pt); //得到位置
八、上下文菜单事件触发事件:OnContextMenu事件
九、显示和隐藏程序菜单
CWnd *pWnd=AfxGetMainWnd();
if(b_m) //隐藏菜单
{
pWnd->SetMenu(NULL);
pWnd->DrawMenuBar();
b_m=false;
}
else
{
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
pWnd->SetMenu(&menu);
pWnd->DrawMenuBar();
b_m=true;
menu.Detach();
}
十、获取可执行文件的图标
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
if (hIcon &&hIcon!=(HICON)-1)
{
pDC->DrawIcon(10,10,hIcon);
}
DestroyIcon(hIcon);
十一、窗口自动靠边程序演示
BOOL AdjustPos(CRect* lpRect)
{
//自动靠边
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
RECT rWorkArea;
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);
CRect rcWA;
if(!bResult)
{
//如果调用不成功就利用GetSystemMetrics获取屏幕面积
rcWA=CRect(0,0,iSX,iSY);
}
else
rcWA=rWorkArea;
int iX=lpRect->left;
int iY=lpRect->top;
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
{
//调整左
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.left-iX,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
{
//调整上
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.top-iY);
AdjustPos(lpRect);
return TRUE;
}
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
{
//调整右
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
{
//调整下
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
return TRUE;
}
return FALSE;
}
//然后在ONMOVEING事件中使用所下过程调用
CRect r=*pRect;
AdjustPos(&r);
*pRect=(RECT)r;
十二、给系统菜单添加一个菜单项
给系统菜单添加一个菜单项需要进行下述三个步骤:
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
0x0F而小于0xF000;
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加
两个新的菜单项。
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
…
//Make sure system menu item is in the right range.
ASSERT(IDM_MYSYSITEM <0xF000);
//Get pointer to system menu.
CMenu* pSysMenu=GetSystemMenu(FALSE);
ASSERT_VALID(pSysMenu);
//Add a separator and our menu item to system menu.
CString StrMenuItem(_T ("New menu item"));
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
…
}
13、运行其它程序
//运行EMAIL或网址
char szMailAddress[80];
strcpy(szMailAddress,"mailto:netvc@21cn.com");
ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);
//2、运行可执行程序
WinExec("notepad.exe",SW_SHOW); //运行计事本
14、动态增加或删除菜单
(1)、 增加菜单
//添加
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符
(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T("Always on &Top")); //添加新的菜单项
DrawMenuBar(); //重画菜单
(2)、 删除菜单
//删除
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
CString str ;
for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜单的项数。
{
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION);
//将指定菜单项的标签拷贝到指定的缓冲区。MF_BYPOSITION的解释见上。
if(str=="Always on &Top") //如果是刚才我们增加的菜单项,则删除。
{
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);
break;
}
}
15、测试ALT键是否按下:
GetKeyState(VK_MENU);
GetAlt();
16、检查是否按下鼠标左键
if((nFlags&MK_LBUTTON)==MK_LBUTTON)
17、检查键盘输入
在OnKeyDown中的参数nChar是一个数值,当显示的时候,需要转换成字符,使用如下的命令:
char lsChar;
lsChar=char(nChar);
if(lsChar=='A');
{
.......
}
18、调用另一个函数::GetKeyState(),用一个特定的键代码来确定法键是否被按下。如果::GetKeyState函数的返回值是负的,表示该键被按下。如果返回值是非负的,表示该留未被按下。例如:如果要确定shift键是否被按下,可以使用下面的代码:
if(::GetKeyState(VK_SHIFT)
AfxMessageBox("shift is pressed");
}
19.如何在编程的过程中随时结束应用程序(常规)
1)需要向窗口发送 WM_CLOSE/WM_QUIT消息,
调用 CWnd::OnClose成员函数并允许对用户提示是否保存修改过的数据.
AfxGetMainWnd()->SendMessage(WM_CLOSE); //别忘了先得到当前窗口的指针
2)使用函数: void PostQuitMessage( int nExitCode // exit code );
3)使用标准函数:void exit( int status ); //尽量不要在MFC中使用
20.得到屏幕的尺寸大小
HWND hWnd;
CRect Rect;
hWnd = ::GetDesktopWindow();
::GetClientRect(hWnd, &Rect);
//---------------------------------------------------------
如何查询和设置系统参数
在Windows 3.1 SDK中介绍过SDK函数SystemParametersInfo,调用该函数可以查询和设置系统参数,诸如按键的重复速率设置、鼠标双击延迟时间、图标字体以及桌面覆盖位图等等。
//Create a font that is used for icon titles.
LOGFONT stFont; :: SystemParametersInfo (SPIF_GETICONTITLELOGFONT, sizeof (LOGFONT), &stFont, SPIF_SENDWININICHANGE);
m_font.CreateFontIndirect (&stFont); //Change the wallpaper to leaves.bmp.
:: SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, _T("forest.bmp"),SPIF_UPDATEINIFILE);
//---------------------------------------------------------
如何使用一个预定义的Windows光标
调用CWinApp:: LoadStandardCursor并传送光标标识符。
BOOL CSampleDialog:: OnSetCursor (CWnd* pWnd, UINT nHitTest, UINT message) { //Display wait cursor if busy.
if (m_bBusy) {
SetCursor (AfxGetApp () ->LoadStandardCursor (IDC_WAIT));
return TRUE; }
return CDialog:: OnSetCursor (pWnd. nHitTest,message); }
标签: Programming
一些WINDOWapi的使用(转贴)收藏
一些WINDOWapi的使用(转贴)收藏
新一篇: 在上海过的第一个端午节 | 旧一篇: GNU 是什么?
一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);
二、关闭CD_ROM
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
三、关闭计算机
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
//Windows98,调用ExitWindowsEx()函数重新启动计算机
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
//关机、关闭电源等操作
// 退出前的一些处理程序
}
四、重启计算机
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
if(hInst != NULL)
{
//获得函数的地址并调用之
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
(*ShutDownDialog)(0);
}
五、枚举所有字体
LOGFONT lf;
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
strcpy(lf.lfFaceName,"");
CClientDC dc (this);
//Enumerate the font families
::EnumFontFamiliesEx((HDC) dc,&lf,
(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
//枚举函数
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
{
// Create a pointer to the dialog window
CDay7Dlg* pWnd = (CDay7Dlg*) lparam;
// add the font name to the list box
pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
// Return 1 to continue font enumeration
return 1;
}
其中m_ctlFontList是一个列表控件变量
六、一次只运行一个程序实例,如果已运行则退出
if( FindWindow(NULL,"程序标题")) exit(0);
七、得到当前鼠标所在位置
CPoint pt;
GetCursorPos(&pt); //得到位置
八、上下文菜单事件触发事件:OnContextMenu事件
九、显示和隐藏程序菜单
CWnd *pWnd=AfxGetMainWnd();
if(b_m) //隐藏菜单
{
pWnd->SetMenu(NULL);
pWnd->DrawMenuBar();
b_m=false;
}
else
{
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
pWnd->SetMenu(&menu);
pWnd->DrawMenuBar();
b_m=true;
menu.Detach();
}
十、获取可执行文件的图标
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
if (hIcon &&hIcon!=(HICON)-1)
{
pDC->DrawIcon(10,10,hIcon);
}
DestroyIcon(hIcon);
十一、窗口自动靠边程序演示
BOOL AdjustPos(CRect* lpRect)
{
//自动靠边
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
RECT rWorkArea;
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);
CRect rcWA;
if(!bResult)
{
//如果调用不成功就利用GetSystemMetrics获取屏幕面积
rcWA=CRect(0,0,iSX,iSY);
}
else
rcWA=rWorkArea;
int iX=lpRect->left;
int iY=lpRect->top;
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
{
//调整左
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.left-iX,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
{
//调整上
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.top-iY);
AdjustPos(lpRect);
return TRUE;
}
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
{
//调整右
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
AdjustPos(lpRect);
return TRUE;
}
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
{
//调整下
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
return TRUE;
}
return FALSE;
}
//然后在ONMOVEING事件中使用所下过程调用
CRect r=*pRect;
AdjustPos(&r);
*pRect=(RECT)r;
十二、给系统菜单添加一个菜单项
给系统菜单添加一个菜单项需要进行下述三个步骤:
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
0x0F而小于0xF000;
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加
两个新的菜单项。
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
…
//Make sure system menu item is in the right range.
ASSERT(IDM_MYSYSITEM <0xF000);
//Get pointer to system menu.
CMenu* pSysMenu=GetSystemMenu(FALSE);
ASSERT_VALID(pSysMenu);
//Add a separator and our menu item to system menu.
CString StrMenuItem(_T ("New menu item"));
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
…
}
13、运行其它程序
//运行EMAIL或网址
char szMailAddress[80];
strcpy(szMailAddress,"mailto:netvc@21cn.com");
ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);
//2、运行可执行程序
WinExec("notepad.exe",SW_SHOW); //运行计事本
14、动态增加或删除菜单
(1)、 增加菜单
//添加
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符
(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T("Always on &Top")); //添加新的菜单项
DrawMenuBar(); //重画菜单
(2)、 删除菜单
//删除
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
CString str ;
for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜单的项数。
{
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION);
//将指定菜单项的标签拷贝到指定的缓冲区。MF_BYPOSITION的解释见上。
if(str=="Always on &Top") //如果是刚才我们增加的菜单项,则删除。
{
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);
break;
}
}
15、测试ALT键是否按下:
GetKeyState(VK_MENU);
GetAlt();
16、检查是否按下鼠标左键
if((nFlags&MK_LBUTTON)==MK_LBUTTON)
17、检查键盘输入
在OnKeyDown中的参数nChar是一个数值,当显示的时候,需要转换成字符,使用如下的命令:
char lsChar;
lsChar=char(nChar);
if(lsChar=='A');
{
.......
}
18、调用另一个函数::GetKeyState(),用一个特定的键代码来确定法键是否被按下。如果::GetKeyState函数的返回值是负的,表示该键被按下。如果返回值是非负的,表示该留未被按下。例如:如果要确定shift键是否被按下,可以使用下面的代码:
if(::GetKeyState(VK_SHIFT)
AfxMessageBox("shift is pressed");
}
19.如何在编程的过程中随时结束应用程序(常规)
1)需要向窗口发送 WM_CLOSE/WM_QUIT消息,
调用 CWnd::OnClose成员函数并允许对用户提示是否保存修改过的数据.
AfxGetMainWnd()->SendMessage(WM_CLOSE); //别忘了先得到当前窗口的指针
2)使用函数: void PostQuitMessage( int nExitCode // exit code );
3)使用标准函数:void exit( int status ); //尽量不要在MFC中使用
20.得到屏幕的尺寸大小
HWND hWnd;
CRect Rect;
hWnd = ::GetDesktopWindow();
::GetClientRect(hWnd, &Rect);
//---------------------------------------------------------
如何查询和设置系统参数
在Windows 3.1 SDK中介绍过SDK函数SystemParametersInfo,调用该函数可以查询和设置系统参数,诸如按键的重复速率设置、鼠标双击延迟时间、图标字体以及桌面覆盖位图等等。
//Create a font that is used for icon titles.
LOGFONT stFont; :: SystemParametersInfo (SPIF_GETICONTITLELOGFONT, sizeof (LOGFONT), &stFont, SPIF_SENDWININICHANGE);
m_font.CreateFontIndirect (&stFont); //Change the wallpaper to leaves.bmp.
:: SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, _T("forest.bmp"),SPIF_UPDATEINIFILE);
//---------------------------------------------------------
如何使用一个预定义的Windows光标
调用CWinApp:: LoadStandardCursor并传送光标标识符。
BOOL CSampleDialog:: OnSetCursor (CWnd* pWnd, UINT nHitTest, UINT message) { //Display wait cursor if busy.
if (m_bBusy) {
SetCursor (AfxGetApp () ->LoadStandardCursor (IDC_WAIT));
return TRUE; }
return CDialog:: OnSetCursor (pWnd. nHitTest,message); }
2008/08/27
冯象:中国要律师干嘛?
| 2007-05-12 15:41:05 来自: hutuworm (杭州) 《律师文摘》自创刊以来,摘登了不少好文章。补白也颇具特色,用一些统计数字,发人深省。例如第三辑253页有这样几则:一、北大法学院陈兴良兄发现,目前中国 “70%以上”“事关被告人生死攸关的刑事案件”无律师介入,即大多数被告人都是自辩或请亲友代理。二、1997年至2002年间,至少有500名律师被 “滥抓、滥拘、滥捕、滥诉、滥判”,其中80%由司法机关“送进班房”,“绝大部分(占80%)又最终宣判无罪”(原文如此)。三、近年来各地法院受理刑事案件数量飙升,北京律师却“不敢办刑事案”(即担任辩护人)。“年人均办理数量”已从10年前的2.64件下降到0.78件。 |






















































