一些技巧(9)

来源:互联网 发布:mac如何下载炉石传说 编辑:程序博客网 时间:2024/06/02 19:19
在程序中获得其他程序的图标 
两种方法 
1.SDK函数SHGetFileInfo或使用ExtractIcon获得图标资源的handle 
2.SDK函数SHGetFileInfo获得有关文件的很多信息,如大小图标、属性、类型等 

方法一 
void CSampleView::OnDraw(CDC*pDC) 

  if(::SHGetFileInfo(_T("c://windows//notepad.exe"),0,&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) 
  { 
   pDC->DrawIcon(10,10,stFileInfo.hIcon); 
  } 


方法二 
void CSampleView::OnDraw(CDC*pDC) 

  HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("Notepad.exe"),0); 
  if(hIcon&&hIcon!=(HICON)-1) 
   pDC->DrawIcon(10,10,hIcon); 

//notepad.exe可以用GetWindowsDirectory函数得到。 
=========================================================== 
调用资源DLL 
FindResource 
LoadResource 
FormatMessage 
LoadAccelerators 
LoadBitmap 
LoadCursor 
LoadIcon 
LoadMenu 
LoadString 
=========================================================== 
数据类型的转换方法 
一些常用数据类型的使用,我们先定义一些常见类型变量借以说明 
  int i=100; 
  long l=2001; 
  float f=300.2; 
  double d=12345.119; 
  char username[]="你好你好你"; 
  char temp[200]; 
  char *buf; 
  CString str; 
  _variant_t v1; 
  _bstr_t v2; 
1.其他数据类型转换为字符串 
  短整型(int) 
  itoa(i,temp,10);//将i转换为字符串放入temp中,最后一个数字表示十进制 
  itoa(i,temp,2); 
  ltoa(l,temp,10);//按十进制方式转换长整型(long) 
2.从其他包含字符串的变量中获取指向该字符串的指针 
  CString变量 
   str="2008北京奥运"; 
   buf=(lpstr)(lpctstr)str; 
  bstr类型的_variant_t变量 
   v1=(_bstr_t)"你好好"; 
   buf=_com_util::convertbstrtostring((_bstr_t)v1); 
3.字符串转换为其他数据类型 
  strcpy(temp,"123"); 
  短整型(int) 
   i=atoi(temp); 
  长整型(long) 
   l=atol(temp); 
  浮点(double) 
   d=atof(temp); 
4.其他数据类型转换到CString 
  整数(int) 
   str.Format("%d",i); 
  浮点数(float) 
   str.Format("%f",i); 
  字符串指针(char*)等已经被CString构造函数支持的数据类型可以直接赋值 
   str=username 
5.bstr、_bstr_t与ccombstr 
  ccombstr、_bstr_t是对bstr的封装,bstr是指向字符串的32位指针 
  char*转换到bstr可以这样: 
   bstr b=_com_util::convertstringtobstr("数据");//使用前需要加上#include<comutil.h> 
  反之可以使用 
   char*p=_com_util::convertbstrtostring(b); 
6.wParam与lParam 
  对消息的处理中我们经常需要将wParam或lParam等32位数据(DWORD)分解成两个16位数据(WORD) 
  例如 
   WORD lovalue=loword(lParam);//取低16位 
   WORD hivalue=hiword(lParam);//取高16位 
  对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE) 
  例如 
   WORD wvalue; 
   BYTE lovalue=lobyte(wvalue);//取低8位 
   BYTE hivalue=hibyte(wvalue);//取高8位 
原创粉丝点击