VC雕虫小技集(三)关键字 VC雕虫小技集VC雕虫小技集(三)何志丹 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); } 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("Software\\Microsoft\\Internet Explorer\\IntelliForms")); 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");, 上一篇:VC雕虫小技集(二) 下一篇:VC雕虫小技集(四) [置顶] 如何给多维数组赋初值
|
|