VC++vc2008编译器时下面显示的几行什么意思

VC++是什么
VC++是什么
首先VC是一个软件(IDE集成开发环境)(编译、编辑、调试) C和C++。但C++中的有些特性是不用的,例如I/O流,多态继承
WindowsSDK(软件开发工具)
VC的灵魂:MFC(微软基础类库)
ATL(ActiveX模板类库)
其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG)
VC是许许多多技术的综合,就好象少林72般绝技,一般在应用中学会其中很少一部分就够了。我们的现在目的,其实不过是学一套少林长拳。这套长拳应包括:
1、养成一种严谨的软件开发习惯,熟悉软件工程的基本原则。
2、C语言基础
3、C++最基本内容:类、继承性、封装性、多态性的概念
4、如何用向导建立一个程序框架
5、设计菜单
6、设计工具条
7、设计和使用对话框,熟悉最常用的对话框控件:按钮、静态文本、编辑框等
8、知道怎样新建类、成员函数、成员变量、消息处理函数。
9、了解最常用的Windows消息:如WM_PAINT(重绘窗口),鼠标按下、弹起、移动,初始化对话框,等。
10、了解最简单的GDI(图形设备接口):写文字、画框、画点、画线、画圆,设置画笔、画刷。
11、熟悉最常用的MFC类:
CGdiObject及子类
CString、CPoint、CRect、CSize等简单数据类型
以上提到的这些内容,是每个人都会用到的内容。
二、MFC简介
上述主要内容都是与实际操作关系非常密切的,在此不可能讲清楚;而且,这些在一般的书里都会讲到。我主要将最重要的MFC介绍一下。
MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成为高手,做个笔记本把自己认为重要的类、函数记下来,随时学习,也是很好的突击方法。
下面介绍最重要的MFC。
CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。
CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)
CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。
CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。
CDialog对话框
CWinApp应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。最常用函数InitInstance():初始化。
CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。
CPen笔,画线
CBrush刷子,填充
CFont字体,控制文字输出的字体
CBitmap位图
CPalette调色板
CRgn区域,指定一块区域可以用于做特殊处理。
CFile文件。最重要的不外是Open(打开),Read(读入),Write(写)
CString字符串。封装了C中的字符数组,非常实用。
CPoint点,就是(x,y)对
CRect矩形,就是(left,top,right,bottom)
CSize大小,就是(cx,cy)对(宽、高)
三、用好MSDN和例子
作为提高,推荐看的例子有:
nHello最简单的程序框架
nScribble鼠标绘图。教程:编程基础,GDI
nDiblook图像处理最简单范例
nMFCIE因特网浏览器
nEnroll数据库
nDaoviewDao(数据访问对象)范例。树型和列视控件
nCubeOpenGL范例,画一个不断旋转的方块
nHierSvrOLE服务器
nOclientOLE包容器
nDrawcli鼠标绘图。也包括OLE。
nWordPad写字板。OLE
四、几点经验
A.为什么要用Windows而不是DOS编程
Windows编程并不比DOS编程难很多,只是在刚刚接触的时候感到头绪繁多,不知从何下手。实际上,如果你会C语言,你会发现Windows编程的难度并不比当年学C语言时大。DOS编程要想成为高手,也需要学习几百个函数(无论是TC、BC、MicrosoftC),并要深入了解汇编语言级的DOS功能调用。而现在在Windows下,付出相同的工作量,你却可以获得几倍的收益。如果你以前熟悉DOS编程,现在再搞Windows编程,只要两个星期肯定会感到巨大的优越性:在DOS下,每一件事都要自己干,而且还有64K内存、显示精度等的限制,实在是事倍功半了。
B.为什么要用VC而不是其他Windows编程语言
n大多数大型软件(包括Windows自己)都是用C、C++编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。的其他的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。
nVC适合组织大工程(VB就不行)
nBorlandC++或C++Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。
C.开始不要学WinAPI编程,但以后最好学学WinAPI
特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭著的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basic、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWin”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学Windows编程的人。实际上,在Windows下显示“Helloworld”,最简单的方法只要5行就够了:
#include“windows.h”
voidWinMain()
MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplication”,MB_OK);
当然这个程序只建立了一个最简单的对话框,但这已经够了。
如果你没有SDK编程的经验,学VC就是要利用MFC绕过Windows编程的许多细节。有好的工具为什么不用呢?现在你在VC写一个”HelloWorld”,只要写一行代码就可以了。
voidCYourView::OnDraw(CDC*pDC)
//…….其他的代码
pDC-&TextOut(100,100,”HelloWorld!”);
但MFC不是万能的,WinAPI和VC中有很多功能在MFC中并不能反映出来。在入门后,要想发挥VC的完全能力,WindowsAPI还是非常重要的。而且,这些API在其他Windows语言中也用得到。
学语言,与练武道理也差不多。VC、VB、Dlphi、VFP,以及其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但内功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何武功,招式即使再复杂,通常也能在很短时间内记下来;但内功就不是一朝一夕的事。而且,各门派的内功不同,Unix、Linux门有Uinx的内功,Apple(苹果)门有Mac的内功,Java更是自成一派。我们这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。
D.高级语言与自然语言
一门高级语言与一门自然语言是类似的。关键要素有三:
语法:了解C和C++基本语法,这是比较容易的。
修辞:编程的艺术和风格。通常,这是与软件工程联系起来的。算法上的小伎俩并非是关键的。严谨,严格按照规范去做,同时又能发挥出极大的创造性,才是语言学家的本色。
词汇:如何利用别人的工作?如何利用自己以前的工作?这是一个软件工程师成功的关键。如果词汇量不丰富,就写不出好文章,就会有想法表达不出。一个人的语法在上小学之前就基本上学成了,修辞水平也在年轻时就确定了,惟有词汇量需要根据需要不断学习、不断扩充。VC编程中,拥有大的词汇量就意味着要掌握较多的类、函数和其他编程组件。如:WindowsSDK,MFC,以及你所专攻的领域的现成的SDK,比如3D编程中的OpenGL,多媒体编程中的DirectX,图像处理中的Victor库。另外,ActiveX控件的掌握往往也是成败的关键。我们这几年的工作也总结成了一个类库,叫IPX(图像处理框架),大大简化了图像处理的工作;不过现在还有很多细节问题要解决,如果有同学感兴趣可以参与这方面的工作。
学习VC,千万不要用我们在学校里学英语的方法,而要用小孩学说话的方法。所谓学英语的方法,就是我们在本科时学C语言的那种模式:详细搞懂每一个细节,背大量的规则,很少上机实践,没有实际问题供解决,最后由考试来断定学习成果。这种模式的后果大家都清楚:我们学了十几年英语,可有不少人还只会四五千个单词,写百把字的文章,不会说,不能听;尤其要命的是,看不懂VC的帮助文档。我们要象婴儿一样,在使用中学会语法、修辞和词汇;一开始肯定只能编出最糟糕的,就好象小孩开始只会说:“爸爸坐车车”;但“爸爸”“车车”这些词对小孩是最需要的,学习的效率反而最高。学VC的时候,应从我的需要出发,先做一个最简单的东西,然后一点一点复杂起来,象滚雪球一样。
学习VC尤其要和别人交流,你苦苦思考不明白的,也许别人早就解决了。一定要善于学习:从书店找出有用的书;向身边的高手学习;寻找可以利用的源代码、类库、组件、控件、库;如果能上互连网,那就更加能解决问题了。
  VC++是开发的一个(集成开发环境),换句话说,就是使用的一个开发平台.有些软件就是这个编出来的...另外还有VB,VF.只是使用不同语言...但是,
  vc++是平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握、、等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)的原理;MFC是API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。
  VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。
  VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN
API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN
API开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WIN
API的相关内容为主线。
  话说到这里可能更多人关心的是学习VC++需要具备什么条件,为什么对于这扇门屡攻不破呢?
  要想学习好VC必须具备良好的C/C++的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布。
VC++中播放声音的方法
  声音是多媒体的一个重要组成部分,在应用程序中加入声音可以使界面更友好。在VC++中可以根据不同的应用要求,用不同的方法实现声音的播放。
  一.播放声音文件的简单方法
  在VC++
中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL
sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound(
LPCSTR lpszSound, HMODULE hmod, DWORD fuSound
);其中参数lpszSound是需要播放声音的.WAV文件的路径和文件名,
hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。例如播放C:soundmusic.wav可以用sndPlaySound
("c:\sound\music.wav",SND_ASYNC);或PlaySound("c:\sound\music.wav",NULL,
SND_ASYNC|SND_NODEFAULT
);如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音。
  二.将声音文件加入到程序中
   在VC++的程序设计中,可以利用各种标准的资源,如位图,菜单,对话框等。同时VC++也允许用户自定义资源,因此我们可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE文件,实现无.WAV文件的声音播放。
  要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件(实现过程并不复杂,这里不在叙述)。假设生成的声音文件资源标识符为IDR_WAVE1。在播放时只需要调用下面的语句:
  PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(),
SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);
  其中MAKEINTRESOURCE()宏将整数资源标识符转变为字符串,AfxGetResourceHandle()函数返回包含资源的模块句柄,
  SND_RESOURCE是必须的标志。
  作为资源的声音文件的第二种播放方法是把资源读入内存后作为内存数据播放。具体步骤入下:
  1.获得包含资源的模块句柄:
  HMODULE hmod=AfxGetResourceHandle();
  2.检索资源块信息:
hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_WAVE1),_T("WAVE"));
  3. 装载资源数据并加锁:
  HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
  LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
  4.播放声音文件:
  sndPlaySound(lpMemSound,SND_MEMORY));
  5.释放资源句柄:
  FreeResource(hGlobalMem);
  三.播放声音文件的高级方法
   在VC++中提供了一组对音频设备及多媒体文件直接进行操作的函数。利用这些函数可以灵活地对声音文件进行各种处理。
  首先介绍几个要用到的数据结构。WAVEFORMATEX结构定义了WAVE音频数据文件的格式。WAVEHDR结构定义了波形音频缓冲区。读出的数据首先要填充此缓冲区才能送音频设备播放。WAVEOUTCAPS结构描述了音频设备的性能。MMCKINFO结构包含了RIFF文件中一个块的信息。详细的说明请参考VC++中的帮助。
  下面给出程序流程简图及程序源代码清单,在VC++环境下可直接使用:
  源程序清单如下:
  LPSTR szFileN//声音文件名
  MMCKINFO mmckinfoP
  MMCKINFO mmckinfoSubC
  DWORD dwFmtS
  HMMIO m_//音频文件句柄
  DWORD m_WaveL
  HPSTR lpD//音频数据
  HANDLE m_hD
  HANDLE m_hF
  WAVEFORMATEX * lpF
  DWORD m_dwDataO
  DWORD m_dwDataS
  WAVEHDR pWaveOutH
  WAVEOUTCAPS
  HWAVEOUT hWaveO
  //打开波形文件
  if(!(m_hmmio=mmioOpen(szFileName,NULL,MMIO_READ|MMIO_ALLOCBUF)))
  //File open Error
  Error("Failed to open the file.");//错误处理函数
  //检查打开文件是否是声音文件
  mmckinfoParent.fccType =mmioFOURCC(’W’,’A’,’V’,’E’);
  if(mmioDescend(m_hmmio,(LPMMCKINFO)&mmckinfoParent,NULL,MMIO_FINDRIFF))
  //NOT WAVE FILE AND QUIT
  //寻找 ’fmt’ 块
  mmckinfoSubChunk.ckid =mmioFOURCC(’f’,’m’,’t’,’ ’);
  if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
  //Can’t find ’fmt’ chunk
  //获得 ’fmt ’块的大小,申请内存
  dwFmtSize=mmckinfoSubChunk.
  m_hFormat=LocalAlloc(LMEM_MOVEABLE,LOWORD(dwFmtSize));
  if(!m_hFormat)
  //failed alloc memory
  lpFormat=(WAVEFORMATEX*)LocalLock(m_hFormat);
  if(!lpFormat)
  //failed to lock the memory
  if((unsigned
long)mmioRead(m_hmmio,(HPSTR)lpFormat,dwFmtSize)!=dwFmtSize)
  //failed to read format chunk
  //离开 fmt 块
  mmioAscend(m_hmmio,&mmckinfoSubChunk,0);
  //寻找 ’data’ 块
  mmckinfoSubChunk.ckid=mmioFOURCC(’d’,’a’,’t’,’a’);
  if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
  //Can’t find ’data’ chunk
  //获得 ’data’块的大小
  m_dwDataSize=mmckinfoSubChunk.
  m_dwDataOffset =mmckinfoSubChunk.dwDataO
  if(m_dwDataSize==0L)
  //no data in the ’data’ chunk
  //为音频数据分配内存
  lpData=new char[m_dwDataSize];
  if(!lpData)
  //faile
  if(mmioSeek(m_hmmio,SoundOffset,SEEK_SET)&0)
  //Failed to read the data chunk
  m_WaveLong=mmioRead(m_hmmio,lpData,SoundLong);
  if(m_WaveLong&0)
  //Failed to read the data chunk
  //检查音频设备,返回音频输出设备的性能
  if(waveOutGetDeVCaps(WAVE_MAPPER,&pwoc,sizeof(WAVEOUTCAPS))!=0)
  //Unable to allocate or lock memory
  //检查音频输出设备是否能播放指定的音频文件
  if(waveOutOpen(&hWaveOut,DevsNum,lpFormat,NULL,NULL,CALLBACK_NULL)!=0)
  //Failed to OPEN the wave out devices
  //准备待播放的数据
  pWaveOutHdr.lpData =(HPSTR)lpD
  pWaveOutHdr.dwBufferLength =m_WaveL
  pWaveOutHdr.dwFlags =0;
  if(waveOutPrepareHeader(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
  //Failed to prepare the wave data buffer
  //播放音频数据文件
  if(waveOutWrite(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
  //Failed to write the wave data buffer
  //关闭音频输出设备,释放内存
  waveOutReset(hWaveOut);
  waveOutClose(hWaveOut);
  LocalUnlock(m_hFormat);
  LocalFree(m_hFormat);
  delete [] lpD
  说明:1)以上使用的音频设备和声音文件操作函数的声明包含在mmsystem.h头文件中,因此在程序中必须用#include
"mmsystem.h"语句加入头文件。同时在编译时要加入动态连接导入库winmm.lib,具体实现方法是从Developer
Studio的Project菜单中选择Settings,然后在Link选项卡上的Object/Library
Modules控制中加入winmm.lib。2)在pWaveOutHdr.lpData中指定不同的数据,可以播放音频数据文件中任意指定位置的声音。3)
以上程序均在VC++6.0中调试通过,在文中省略了对错误及异常情况的处理,在实际应用中必须加入。
  四.结论
  在VC++中可以根据应用需要采用不同的方法播放声音文件。简单应用可以直接调用声音播放函数。第二种方法可以把声音作为资源加入可执行文件中。如果在播放之前要对声音数据进行处理,可用第三种方法。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
C语言上机软件VC++6.0中文版安装_学习Visual_C++_6.0编程环境的使用.doc26页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:250 &&
C语言上机软件VC++6.0中文版安装_学习Visual_C++_6.0编程环境的使用.doc
你可能关注的文档:
··········
··········
Microsoft?Visual?C++6.0介绍 从2008年4月开始,全国计算机等级考试将全面停止Turbo C2.0(简称TC)软件的使用,所有参加二级C语言、三级信息技术、网络技术和数据库技术上机考试的考生,都要在Visual C++6.0 简称VC 环境下调试运行C程序。众所周知,VC软件主要是用来开发C++程序的,如何在VC下调试运行C程序,对于众多程序设计者来说,确实是一个新的话题。
VC与TC的差异,主要是体现在程序设计语言C++与C的关系上。其实,了解计算机程序设计的人都知道,C++是C语言的升级板,VC是在Windows进行C++程序设计的主要软件,VC完全兼容了C的功能,也就是说,在VC下是完全能够进行C语言程序开发。
我以前下载安装过很多次_VC++6.0中文版全国计算机等级考试C语言上机软件_VC++6.0中文版.rar”安装
安装后你可能会出现下面的对话框,在左下角“不再显示此信息”勾上,然后点击“运行程序就”可以了
Visual C++ 6.0编程环境的使用
编制并运行一个简单程序 1
1.1 编制并运行程序的“四步曲” 1
1.2 工程 Project 以及工程工作区 Project Workspace
1.3 启动并进入VC6的集成开发环境 2
1.4 创建工程并输入源程序代码 3
1.5 不创建工程,直接输入源程序代码 7
1.6 编译、链接而后运行程序 7
1.7 及时备份自己的创作 8
1.8 将自己设计的产品提供给他人使用 8
VC6集成开发环境使用参考 9
2.1 VC6的常用菜单命令项 9
2.2 VC6的主要工作窗口 11
严谨思维,调试程序 13
3.1 什么时候需要对程序进行调试 13
3.2 对程序进行调试的基本手段和方法 13
3.3 对一个简单程序的调试过程 15
3.4 设计合适的程序调试方案 17
3.5 优秀程序员的基本素质――丰富的想象、严谨的思维 18
编译与链接过程中常见的出错提示 21
4.1 常见编译错误
正在加载中,请稍后...GridView中动态显示或隐藏某行中的控件解决方法_SendMessage 到指定的窗口 發送點擊的信息 可昰座標信息不對解决方法_VC++的编译器如何把小弟我的代码乱编译__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
GridView中动态显示或隐藏某行中的控件解决方法
SendMessage 到指定的窗口 發送點擊的信息 可昰座標信息不對解决方法
VC++的编译器如何把小弟我的代码乱编译
GridView中动态显示或隐藏某行中的控件解决方法
GridView中动态显示或隐藏某行中的控件请问如何动态的显示或隐藏某行中的控件。现在设置控件的visible属性或者TableCell的display属性都行不通。请问是什么原因或者如果解决这个问题。------解决方案--------------------//WebUserControl.ascx.csHTML code
&%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %&
&asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"&
&ContentTemplate&
&asp:DropDownList runat="server" ID="DropDownList1"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
AutoPostBack="true" &
&asp:ListItem Value="1"&Item 1&/asp:ListItem&
&asp:ListItem Value="2"&Item 2&/asp:ListItem&
&asp:ListItem Value="3"&Item 3&/asp:ListItem&
&asp:ListItem Value="其它"&其它&/asp:ListItem&
&/asp:DropDownList&
&asp:TextBox ID="TextBox1" runat="server" Visible="false" /&
&/ContentTemplate&
&/asp:UpdatePanel&
------解决方案--------------------也就是说DropDownList和TextBox都放在UserControl里。根据选项隐藏或显示的处理代码也放到UserContrl的.cs里。为了尽量避免闪烁,给UserControl套一个UpdatePanel,且设置UpdateMode为Conditional.然后在主页面放置一个ScriptManager, 在TemplateField里放置UserControl.
SendMessage 到指定的窗口 發送點擊的信息 可昰座標信息不對解决方法
SendMessage 到指定的窗口 發送點擊的信息 可昰座標信息不對我自個寫了個代碼
我用SPY++ 去監控我想要控制的窗口
想發送點擊的信息 這邊的座標信息 就是不對
SendMessage(hwnd2, WM_LBUTTONDOWN, 0, (mX And &HFFFF) + (my And &HFFFF) * &H10000)
SendMessage(hwnd2, WM_LBUTTONUP, 0, (mX And &HFFFF) + (my And &HFFFF) * &H10000)
我指定的座標應該是這個值
xPos:136 yPos:31
可是我用SPY++去監控&0AEA S WM_LBUTTONDOWN fwKeys:0000 xPos:19336 yPos:430 [wParam: lParam:01AE4B88]
&0AEA R WM_LBUTTONDOWN lResult:
&0AEA S WM_LBUTTONUP fwKeys:0000 xPos:19592 yPos:430 [wParam: lParam:01AE4C88]
&0AEA R WM_LBUTTONUP lResult:
&0AEA S WM_LBUTTONDOWN fwKeys:0000 xPos:-2492 yPos:430 [wParam: lParam:01AEF644]
&0AEA R WM_LBUTTONDOWN lResult:
&0AEA S WM_LBUTTONUP fwKeys:0000 xPos:-2476 yPos:430 [wParam: lParam:01AEF654]
&0AEA R WM_LBUTTONUP lResult:
&0AEA S WM_LBUTTONDOWN fwKeys:0000 xPos:-3696 yPos:428 [wParam: lParam:01ACF190]
&0AEA R WM_LBUTTONDOWN lResult:
&0AEA S WM_LBUTTONUP fwKeys:0000 xPos:-3680 yPos:428 [wParam: lParam:01ACF1A0]
&0AEA R WM_LBUTTONUP lResult:
&0AEA S WM_LBUTTONDOWN fwKeys:0000 xPos:29756 yPos:429 [wParam: lParam:01AD743C]
&0AEA R WM_LBUTTONDOWN lResult:
&0AEA S WM_LBUTTONUP fwKeys:0000 xPos:29772 yPos:429 [wParam: lParam:01AD744C]
&0AEA R WM_LBUTTONUP lResult:
都亂跳 沒有照我定義的輸入到這個窗口
這邊想要請教各位大爺
該怎麼修改我的代碼 才能得到我想要的座標呢?------解决方案--------------------(mX And &HFFFF) + (my And &HFFFF) * &H10000
这样计算是正确的吗?单步调试看看
为什么不用POINTS结构(MAKEPOINTS也行)传这个坐标呢?参考MSDN中的WM_LBUTTONDOWN ------解决方案--------------------'VB要传POINTS还有点麻烦,参考下面这个吧
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const MK_LBUTTON = &H1
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Private Sub Command1_Click()
Dim a As Long
Dim x As Integer, y As Integer
x = 136 / 15
'xPos, yPos只能是15的倍数,且要先除以15
y = 31 / 15
a = x + y * &H10000
PostMessage hwnd2, WM_LBUTTONDOWN, MK_LBUTTON, a
PostMessage hwnd2, WM_LBUTTONUP, MK_LBUTTON, a
VC++的编译器如何把小弟我的代码乱编译
VC++的编译器怎么把我的代码乱编译?我的代码在DEBUG版本下编译都好好的,用Release编译就会出错.
然后我就不断的尝试修改release版本下的编译选项,最后发现,只要我将优化方式选择为max
speed,他就会出错.
然后我就设断点跟踪他,结果发现他把我的一断代码编译成很奇怪的汇编代码,而且函数内调用的局部变量和参数经过他汇编后的栈内地址都是错误的,请教大家这是什么原因呢?实在头痛啊------解决方案--------------------观察一下所有的变量是否已经初始化. ------解决方案-------------------- 发生这种问题,一般是变量没有初始化。
不过,有一次我也遇到同样的问题,是因为程序调用的资源没有释放,我就把程序给关掉了。
在DEBUG模式下可以运行,RELEASE模式下运行就会弹出错误对话框。
------解决方案--------------------有时候,编译器的优化选项不是我们想要的。
为了保证代码的正确性,在速度要求不是很高的情况下,关闭优化选项。
------解决方案--------------------1.以外,在release版本下设置断点也不是想象中的那么简单,可能就没有执行到哪个地方.或者就是乱码.
2.在debug和release版本下,是否进行海量测试,或者长时间的压力测试,这样才能说只是因为一个参数的事.要不然,可能问题就还没暴露出来.
------解决方案--------------------检查优化
如果您喜欢IT行业或者对IT行业感兴趣,想开拓技术视野,欢迎加入本站官方QQ群:,在群里认识新朋友和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 ffmpeg vc编译 的文章

 

随机推荐