VC雕虫小技集(三) (转)

本文分享了使用Visual C++进行开发的一些实用技巧,包括固定窗口大小、关闭窗口与对话框的方法、全局变量使用、让DOS程序开机自动运行而不显示、清除浏览器自动密码历史记录、执行外部可执行程序等。
VC雕虫小技集(三) (转)[@more@] 

VC雕虫小技集(三)

.NET/develop/author/netauthor/he_zhidan/">何志丹

1,固定窗口大小,最大值为(600,400),最小值也为(600,400).

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)

{

  lpMMI->ptMaxTrackSize.x = 600;

  lpMMI->ptMaxTrackSize.y = 400;

  lpMMI->ptMinTrackSize.x = 600;

  lpMMI->ptMinTrackSize.y = 400;

 

  CFrameWnd::OnGetMinMaxInfo(lpMMI);

}

 XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

2,关闭对话框和窗口:

其实,一般窗口的销毁可以用DestoryWindow(),对话框的销毁可以用EndDialiog().

EndDialog(IDOK);

domodal()的返回值为IDOK,但不会执行用户定义的OnOK.

只要发送WM_CLOSE消息,就会有响应的函数处理的。

SendMessage(WM_CLOSE);

PostMessage(WM_CLOSE);

void CTestDialog::OnButton1()

  GetParent()->DestroyWindow();

}

窗口和对话框一起关

PostMessage(WM_QUIT);

SendMessage(WM_QUIT);//不行

模式对话框用DestroyWindow();

用EndDialog

你再打开原对话框就有问题

 

3,全局变量的使用:

C***App中定义一个CString

使用时

void CDlgDlg::OnButton2()

{

  ((CDlgApp*)AfxGetApp())->str = "test";

}

不要忘记了包含文件

 

4,如何让dos程序开机自动运行并且不显示

自动运行好解决,写注册表run值,

vc+windows2000

把main改为winmain

 

5,清除自动密码历史记录

浏览器中:

工具->Internet选项->内容->点"自动完成(U)"按钮->清除密码

http://tzsvc.xiloo.com/skill/sys/clear.htm

SHDeleteKey(HKEY_CURRENT_USER,

_T("SoftwareMicrosoftInternet ExplorerintelliForms"));

 

6,执行一个可执行程序

方法一:

 shellExecute(this->GetSafeHwnd(),"Open","f:he.txt",NULL,NULL,SW_SHOWNORMAL );

方法二:

PROCESS_INFORMATION pi;

  STARTUPINFO si;

  si.cb = sizeof(STARTUPINFO);

  si.lpReserved = NULL;

  si.lpDesktop = NULL;

  si.lpTitle = NULL;

  si.dwFlags = 0;

  si.cbReserved2 = 0;

  si.lpReserved2 = NULL;

  BOOL bres = CreateProcess(NULL,"test a.txt b.txt",NULL,NULL,false,

  NORMAL_PRIORITY_CLASS,

  NULL,NULL,&si,&pi);

if(bres==false)

{

AfxMessageBox("CreateProcess failed");

}

else

{

CloseHandle(pi.hThread);

Dword dwret=WaitForSingleobject(pi.hProcess, 1000*30);

switch(dwret)

{

case WAIT_OBJECT_0:

DWORD dwexitcode;

bres = GetExitCodeProcess(pi.hProcess,&dwexitcode);

TCHAR exitmsgbuf[1024];

if(bres)

{

wsprintf(exitmsgbuf,"exit code:%d",dwexitcode);

}

else

wsprintf(exitmsgbuf,"exit code failed to return");

 

AfxMessageBox(exitmsgbuf);

break;

default:

AfxMessageBox("exit for other reason");,


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-962602/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-962602/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值