VC杂项编程


十六、将字符转换为数字:
int i = atoi("12345"); 或 sscanf("12345","%d",&i);  
十七、调用外部应用程序可使用的函数:
  CreateProcess、WinExec、ShellExecute。
例:ShellExecute(pWnd->m_wnd, "open", "my.exe", NULL, NULL, SW_NORMAL)
一、父窗体句柄,二、命令"open",三、文件路径,四、参数,五、运行路径,六、显示方式
十八、经典安装程序制作软件:
InstallShield for Microsoft Visual C++6.0
release 方式是在build菜单中的Set Active configuration中改
在project菜单里面,选Add to Project的component and control来加入ocx控件
十九、控件的注册:
1.注册
regsvr32 x:/xxx/demo.ocx 不一定非得在 Windows 系统目录
2.卸载
regsvr32 /u x:/xxx/demo.ocx
二十、获取当前时间:
CTime m_time=CTime::GetCurrentTime();
char szText[100];
memset(szText,0,100);
sprintf(szText,"%d_%d_%d",m_time.GetHour(),m_time.GetMinite(),m_time.GetSecond());
    // 如何得到当前时间日期
    CTime time = CTime::GetCurrentTime();  
    CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S");
    // 方法二
    SYSTEMTIME ti;
    GetSystemTime(&ti); // 如何得到当前时间日期
    ti.wMilliseconds; // 得到毫秒时间
SYSTEMTIME time;
CString str;
GetLocalTime( &time );
str.Format( "%04d:%02d:%02d",time.wYear,time.wMonth.....);
二一、修改单文档程序的标题:
OnCreat()中加入  SetWindowText("weichao");
CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中加入  cs.style =WS_OVERLAPPEDWINDOW;
二二、隐藏程序在任务栏的图标:
对话框程序放OnInitDialog()函数:
SetWindowLong(this->m_hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务拦按钮
二三、读取编辑框内容:
    GetDlgItemText(IDC_EDIT_TXDATA,m_strTXData);
二四、自绘菜单宽度不对,高度是对的,解决办法:
在ClassWizard中的ClassName下,选CMianFrame,在Messages下选WM_CONTEXTMENU并生成相应的函数,如下:
 void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point)
 {
  CMenu menu;
     menu.LoadMenu(IDR_MENU1);//IDR_MENU1是你要弹出菜单的ID号.
     CMenu *popup=menu.GetSubMenu(0);
     popup->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
 }
二五、重启计算机:
调用一个API函数ExitWindowsEx就可以了, 两个参数:UFlag,标记,可以选择EWX_REBOOT,EWX_SHUTDOWN,EWX_POWEROFF再或上EWX_FORCE第二个参数就是0了
二六、无title对话框的移动:
void CScreenSnapDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    //实现窗体无标题移动
    PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
    
    CDialog::OnLButtonDown(nFlags, point);
}
二七、获取操作系统版本:
OSVERSIONINFO OsVersionInfo;//包含操作系统版本信息的数据结构
OsVersionInfo.dwOSVersionInfoSize= sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo);//获取操作系统版本信息
二八、设置对话框为最顶层:
(在OnInitDialog中添加)
SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
二九、对话框程序不在任务栏显示:
(在OnInitDialog中添加)
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
三十、向对话框窗口添加右键菜单:
 CMenu  menu,*pmenu;  
 menu.LoadMenu(IDR_MENU1);  
 pmenu=menu.GetSubMenu(0);  
 
 CPoint  ptScreen(point);  
 ClientToScreen(&ptScreen);  
 
 pmenu->TrackPopupMenu(TPM_RIGHTBUTTON,ptScreen.x,ptScreen.y,this);  
三一、文件查找:
(例如查找连续的换行符)
 FILE *fp,*fp1;
 int flag=0;
 int ch;
 fp=fopen("c://test.txt","r");
 fp1=fopen("c://wrttest.txt","w");

 while(!feof(fp))
 {
  ch=fgetc(fp);
  if(feof(fp))
   break;
  if(ch==’/n’&&flag==1)
   continue;
  else if(ch==’/n’&&flag==0)
   flag=1;
  else
   flag=0;
  fputc(ch,fp1);
 }
 fclose(fp1);
 fclose(fp);
三二、托盘菜单不点击不能消失的解决办法:
在菜单之后使用下述代码:
        CPoint pt;
        GetCursorPos(&pt);
        
        SetForegroundWindow();
        NotifyMenu.TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);
        PostMessage(WM_NULL,0,0);
三三、对话框由小到大显示的动画效果:
在InitDialog中增加:
 ShowWindow(SW_HIDE);
 CRect dlgRect;
 GetClientRect(&dlgRect);
 CPoint centerPoint;
 centerPoint.x=dlgRect.Width()/2;
 centerPoint.y=dlgRect.Height()/2;//得到对话框的中点坐标
 CRgn testrgn;
 this->ShowWindow(SW_HIDE);  
 int m=GetSystemMetrics(SM_CYSIZEFRAME);
 
 //以下代码实现对话框的动态弹出
 
 for (int i=10;i<dlgRect.Width()/2+m;i+=1)
 {   
  testrgn.CreateRectRgn(centerPoint.x-i,centerPoint.y-i,centerPoint.x+i,centerPoint.y+i);
  SetWindowRgn((HRGN) testrgn,TRUE);
  ShowWindow(SW_SHOW);
  CenterWindow();
  testrgn.DeleteObject();
 }
三四、按行读出文本文件:
下面的例子演示了一行一行取,直到取完。
 CStdioFile myFile;
   CString ReadFileString;
 if(myFile.Open("C://Readme.txt", Cfile::modeRead) == TRUE)
 {
  while(myFile.ReadString(ReadFileString) != FALSE)
  { 
     //... 处理代码 
  }
 }
三五、使用IDC_HAND时提示未定义,加入以下代码:
#if(WINVER >= 0x0500)
#define IDC_HAND            MAKEINTRESOURCE(32649)
#endif /* WINVER >= 0x0500 */
三六、使应用程序启动时不自动创建新文档:
在默认情况下,用AppWizard开发的SDI/MDI应用程序在启动时创建一个新的文档。如果要使应用程序在启动时不创建新文档,只需在应用类 CmyApp::InitInstance()函数的ProcessShellCommand调用前加上下面的语句就可以了:
 cmdInfo.m_nShellCommand = CComandLineInfo::FileNothing;
三七、播放mp3:
    CFileDialog file(true);
    if(file.DoModal()==IDOK)
    {
        CString filename=file.GetFileName();
        if(hwnd!=NULL)
        {
            MCIWndDestroy(hwnd);
        }
        hwnd=MCIWndCreate(this->m_hWnd,NULL,MCIWNDF_NOPLAYBAR,filename);
        ::ShowWindow(hwnd,SW_HIDE);
        MCIWndSetVolume(hwnd,1000);
        MCIWndPlay(hwnd);
    }
三八、获取屏幕RGB值:
 OnTimer中添加
 CPoint pos;
 GetCursorPos(&pos);//获取鼠标坐标
 HDC hDC = ::GetDC(NULL);
 COLORREF clr = ::GetPixel(hDC, pos.x, pos.y);
    
 CString ClrText;
 ClrText.Format("R:%d G:%d B:%d",GetRvalue(clr),GetGvalue(clr),GetBvalue(clr));
三九、打开一个网址:
打开
http://www.sina.com.cn 这个站点如下:
ShellExecute(NULL, "open", "http://www.sina.com.cn",NULL, NULL, SW_MAXIMIZE );
此命令将以默认浏览器打开http://www.sina.com.cn,并将加开后的窗口最大化。
又例:
ShellExecute(NULL, "open", "IEXPLORE.exe http://www.sina.com.cn",NULL, NULL, SW_MAXIMIZE );
此命令将直接用IE打开一个sina的站点。不过将开一个新的窗口。
四十、位图按钮:
CButton *pRadio = (CButton*)GetDlgItem(IDC_RADIO);
pRadio->SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP)));
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值