首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

全面掌握VC,就来学习专家编程经验,很有用,不妨参考解决思路

2012-03-05 
全面掌握VC,就来学习专家编程经验,很有用,不妨参考1.显示和隐藏标题栏  方法一:使用API实现  //隐藏TitleB

全面掌握VC,就来学习专家编程经验,很有用,不妨参考
1.   显示和隐藏标题栏

  方法一:使用API实现

  //隐藏TitleBar

  LONG   lStyle   =   ::GetWindowLong(this-> m_hWnd,   GWL_STYLE);

  ::SetWindowLong(this-> m_hWnd,   GWL_STYLE,   lStyle   &   ~WS_CAPTION);

  ::SetWindowPos(this-> m_hWnd,   NULL,   0,   0,   0,   0,

  SWP_NOSIZE   |   SWP_NOMOVE   |   SWP_NOZORDER   |   SWP_NOACTIVATE   |   SWP_FRAMECHANGED);

  //   显示TitleBar

  ::SetWindowLong(this-> m_hWnd,   GWL_STYLE,   lStyle   |   WS_CAPTION);

  ::SetWindowPos(this-> m_hWnd,   NULL,   0,   0,   0,   0,??SWP_NOSIZE   |   SWP_NOMOVE   |   SWP_NOZORDER   |   SWP_NOACTIVATE   |   SWP_FRAMECHANGED);

  方法二:使用CWnd成员函数ModifyStyle实现

  //   隐藏TitleBar

  ModifyStyle(WS_CAPTION,   0,   SWP_FRAMECHANGED);

  //   显示TitleBar

  ModifyStyle(0,   WS_CAPTION,   SWP_FRAMECHANGED);

  2   .   怎么用SendMessage()来发送消息来清空它的内容??

  HWND   hEditWnd=GetDlgItem(IDC_EDIT1)-> GetSafeHwnd();

  ::SendMessage(hEditWnd,WM_SETTEXT,(WPARAM)0,(LPARAM) " ");

  3.   弹出文件的属性窗口

  SHELLEXECUTEINFO   ShExecInfo   ={0};

  ShExecInfo.cbSize   =   sizeof(SHELLEXECUTEINFO);

  ShExecInfo.fMask   =   SEE_MASK_INVOKEIDLIST   ;

  ShExecInfo.hwnd   =   NULL;

  ShExecInfo.lpVerb   =   "properties ";

  ShExecInfo.lpFile   =   "c:\ ";   //也可以是文件

  ShExecInfo.lpParameters   =   " ";

  ShExecInfo.lpDirectory   =   NULL;

  ShExecInfo.nShow   =   SW_SHOW;

  ShExecInfo.hInstApp   =   NULL;

  ShellExecuteEx(&ShExecInfo);

  4.   删除一个目录下的所有文件

  BOOL   DeleteDirectory(LPCTSTR   DirName)
  {
   CFileFind   tempFind;   //声明一个CFileFind类变量,以用来搜索
   char   tempFileFind[200];   //用于定义搜索格式
   sprintf(tempFileFind, "%s\\*.* ",DirName);
   //匹配格式为*.*,即该目录下的所有文件  
 
   BOOL   IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
   //查找第一个文件
   while(IsFinded)
   {
    IsFinded=(BOOL)tempFind.FindNextFile();   //递归搜索其他的文件
    if(!tempFind.IsDots())   //如果不是 ". "目录
    {
     char   foundFileName[200];
     strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
     if(tempFind.IsDirectory())   //如果是目录,则递归地调用
     {  
      //DeleteDirectory
      char   tempDir[200];
      sprintf(tempDir, "%s\\%s ",DirName,foundFileName);
      DeleteDirectory(tempDir);
     }
     else
     {  
      //如果是文件则直接删除之
      char   tempFileName[200];
      sprintf(tempFileName, "%s\\%s ",DirName,foundFileName);
      DeleteFile(tempFileName);
     }
    }
   }
   tempFind.Close();
   if(!RemoveDirectory(DirName))   //删除目录
   {
    AfxMessageBox( "删除目录失败! ",MB_OK);
    return   FALSE;
   }
   return   TRUE;
  }

  5.lib和dll文件的区别和联系

  .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。

  .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须:

  1   包含一个对应的头文件告知编译器lib文件里面的具体内容



  2   设置lib文件允许编译器去查找已经编译好的二进制代码

  如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32   API函数LoadLibrary、GetProcAddress。事实上,我们可以在Visual   C++   IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C++函数或一些重载操作的函数名字。

  一般我们最主要的关于lib文件的麻烦就是出现unresolved   symble   这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C++工程里用了C语言写的lib文件,就必需要这样包含:

  extern   "C "
  {
   #include   "myheader.h "
  }

  这是因为C语言写的lib文件没有C++所必须的名字破坏,C函数不能被重载,因此连接器会出错。


转http://develop.csai.cn/c/200611071037011756.htm

[解决办法]
sf
[解决办法]
经验啊
[解决办法]
谢谢楼主
无私奉献
致敬 -^^-
[解决办法]
up
[解决办法]
学习

热点排行