MoveWindow出错。

yeajay 2008-10-04 02:19:50
代码如下,小弟新手,为什么会出错?应该怎么改呢,先谢过了 :-)

void CMyBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default

this->GetWindowRect(lpRect);
MoveWindow(lpRect->left+10,lpRect->top+10,lpRect->right-lpRect->left,lpRect->bottom-lpRect->top);
CButton::OnMouseMove(nFlags, point);
}
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeajay 2008-10-04
  • 打赏
  • 举报
回复
谢谢了大侠,找到错误了,确实是我没有分配空间,结贴去……
菜牛 2008-10-04
  • 打赏
  • 举报
回复
不是问你类型,类型错了编译也通不过;可是如果没有分配空间去使用指针就会出现运行时错误。
yeajay 2008-10-04
  • 打赏
  • 举报
回复
lpRect是一个成员变量,LPRECT类型
yangjinming8888 2008-10-04
  • 打赏
  • 举报
回复
void CMyBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect lpRect;//定义变量
this->GetWindowRect(lpRect);
MoveWindow(lpRect->left+10,lpRect->top+10,lpRect->right-lpRect->left,lpRect->bottom-lpRect->top);
CButton::OnMouseMove(nFlags, point);
}

菜牛 2008-10-04
  • 打赏
  • 举报
回复
lpRect是什么东西,也没见你的声明,是不是没有分配空间。
yeajay 2008-10-04
  • 打赏
  • 举报
回复
运行的时候出错,看不懂错误信息,错误信息是:
AppName: 6076641E002E006500780065 AppVer: 1.0.0.1 ModName: user32.dll
ModVer: 5.1.2600.3099 Offset: 0000b710
wltg2001 2008-10-04
  • 打赏
  • 举报
回复
什么错啊
可用来在VB,VC中驱动摄像头,进行静帧捕捉的DLL动态链接库(必须要有摄像头生成StillCap0000.bmp):将MyDll文件解压后把MyDll.dll与MyDll.lib一起拷入工程DEBUG目录中(为保险起见DEBUG的外层目录也拷贝一份吧),另有一个VC++6的测试工程test_Dll,已经考入相应DLL和LIB文件,可直接编译运行,VB只拷贝MyDll.dll与MyDll.lib VB2008 调用方法,在公共模块中声名: Public Declare Function CreateWnd Lib "MyDll" () As Double Public Declare Function ClearGraphs Lib "MyDll" () As Double Public Declare Function OnpStillCapture Lib "MyDll" (ByVal hwnd As Long) As Double Public Declare Function InitStillGraph Lib "MyDll" (ByVal hwnd As Long) As Double Public Declare Function CloseWnd Lib "MyDll" () As Double 在窗体上放置2个PictureBox控件,名字为:pic1,pic2 放置三个按键:名字为Btn1,Btn2,Btn3 Btn1为打开视频,调用代码: Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click InitStillGraph(pic1.Handle) '打开摄像头预览视频 end sub Btn2为截取视频保存为BMP,文件保存在应用程序路径下,调用代码: Private Sub Btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn2.Click OnpStillCapture(pic2.Handle) '截取预览视频一帧图像 end sub Btn3为截取视频保存为清除内存,调用代码: Private Sub Btn3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn3.Click ClearGraphs() '退出前,完成内存清扫工 end sub VC调用方法: 在对话框上放置两个图像框,类型为位图,三个按键B1,B2,B3 定义全局函数引用: typedef HWND(* CreateWnd)(void);// typedef HRESULT(* InitStillGraph)(HWND hwnd); typedef void (* OnpStillCapture)(HWND hwnd); typedef int (* ClearGraphs)(); HINSTANCE glibsample; //如果定义成HANDLE类型,则出错 CreateWnd createwnd; InitStillGraph initStillGraph;//定义引用函数 OnpStillCapture onpStillCapture;//定义引用函数 ClearGraphs clearGraphs;//定义引用函数 用类向导为两个位图框建立控件(类型为Contorl)变量,m_p1,m_2 : 在窗口OnInitDialog()函数中调整图像框大小: // TODO: Add your specialized code here and/or call the base class m_p1.MoveWindow(0,0,200,200,true); m_p2.MoveWindow(210,0,200,200,true); glibsample=LoadLibrary("MyDll.dll"); //加载dll 在B1消息函数中: void 你的类::OnB1() { initStillGraph=(InitStillGraph)GetProcAddress(glibsample,"InitStillGraph"); (*initStillGraph)(m_p1.m_hWnd);//预览图像 } 在B2消息函数中: void 你的类::O
1、VC++编程环境介绍 ①、编程环境、编译器; ②、名词解释; ③、一个简单的MFC对话框工程; ④、个人认为在学习过程中可以看的不错书籍; ⑤、VC编译EXE在没装VC的电脑上运行出错问题解决! 2、ANSI与UNICODE ①、ANSI与UNICODE; ②、不同编码格式下的字符串处理及相互转化; ③、CString常用操作讲解。 3、模态对话框与非模态对话框 ①、模态与非模态对话框的创建; ②、新对话框的初始化工作; ③、两个对话框之间数据传递的几种方法。 4、对话框控件不同类型成员变量的绑定 ①、控件各种类型变量的绑定、最大值及最小值问题; ②、对话框数据交换与验证机制; ③、各种开源控件类的使用; ④、MFC与SDK API中同名函数问题。 5、VC中常用控件的用法讲解 ①、VC中常用控件的用法讲解见:http://www.cctry.com/thread-106-1-1.html ②、VS2008中新增控件的用法讲解。 6、定时器讲解 ①、定时器相关函数讲解:SetTimer、OnTimer、KillTimer; ②、利用定时器实现动态显示时间; ③、改变CStatic控件的文字颜色。 7、MFC对话框程序响应鼠标及键盘消息 ①、MFC对话框程序响应鼠标点击消息; ②、MFC对话框程序响应键盘按键消息; ③、MFC对话框程序响应组合键。 8、MFC对话框注册全局系统热键 9、控件自定义消息的响应: ①、响应按钮控件的右键消息; ②、响应Static控件的双击消息。 ③、自定义编辑框控件只读、颜色不变灰 10、再论“逃跑”按钮的实现 ①、MoveWindow、SetWindowPos、GetWindowRect函数讲解; ②、坐标系的变换。 11、通用对话框讲解 ①、文件选择对话框; ②、目录选择对话框; ③、让对话框程序支持拖拽。 12、菜单操作 ①、对话框程序添加菜单; ②、右键弹出式菜单; ③、菜单项的启用与禁用。 13、对话框的工具栏操作 ①、工具栏的创建; ②、工具栏按钮的响应。 14、对话框的状态栏操作 ①、状态栏的创建; ②、状态栏显示时钟、鼠标位置、鼠标点的颜色信息等。 15、一个简单计算器软件的编写 ①、计算功能的实现; ②、剪贴板操作:将计算结果保存到剪贴板。 16、文件的基本操作之CFile[Ⅰ] ①、文件的创建、打开、关闭; ②、文件的读写、何时读取完毕、读取一行数据; ③、文件指针位置的设置; ④、刷新缓存数据到文件; 17、文件的基本操作[Ⅱ] ①、文件的复制[适用于文件夹]; ②、文件的重命名或移动[适用于文件夹]; ③、文件的删除[只读属性]; 18、文件属性信息的获取与设置 ①、属性信息的获取:大小、时间、隐藏属性等; ②、属性信息的设置 [删除只读属性文件]; ③、判断文件是否存在以及是否为目录; 19、文件夹操作 ①、文件夹的创建与删除; ②、文件夹的属性信息的获取:时间、隐藏属性等; ③、文件夹大小的获取:遍历文件方法[下节课讲解]; 20、文件的遍历与查找小软件的编写[包括文件的各种属性信息] 21、系统各种路径信息的获取 ①、Windows、System32、temp、桌面目录、我的文档等目录的获取; ②、应用程序当前目录的获取与设置及存在的问题讲解; ③、可执行文件所在目录[包括EXE和DLL]; ④、工程当前目录与Debug调试目录的不同。 22、系统信息的获取 ①、当前用户名称、计算机名称的获取; ②、CPU、内存、硬盘信息的获取。 23、进程的相关操作 ①、进程创建的三种方法及CreateProcess参数存在的问题; ②、进程的结束; 进程的枚举 一个简单任务管理器的实现 MFC中动态数组、动态链表、映射表的讲解 ClistCtrl 的自绘操作!
首先十分感谢你的使用. 同时也希望你能对这个功能包进行扩充...发布你的扩充后的版本. --------------------------------------------------------- ^^ 声明这个组件包只能在delphi7上正常安装. 如果您用的是delphi6.则会在安装时出错。 ------------------------------------------------- 作者:李金浩 QQ:67260745 E-mail:lijinjie2793311@163.com 功能包中的大部分功能模块为本人自己所写。。部分收录我的网友的作品及网上比较精典的程序段。    Function HexBCDToint(sHexBCD:Byte):integer;    Function IntToBCD(Int:Byte):word;    Function MinuteToTime(Minute:Double):TdateTime;overload;//分钟到标准时间的转换    Function MinuteToTime(Minute:Double;var DayCount:integer):TdateTime;overload; //------------------------------------------------------------------------------    Function GetWeekOfChina(dDay:TdateTime):string;//得到星期    Function GetWeekOfNum(dDay:TdateTime):integer; //------------------------------------------------------------------------------    Function IsStrAsNumber(NumStr:string):Bool;//判断字符串是不是有效数字在字符串    Function IsStrInOtherStr(mainStr,FindStr:string):Bool;//检测在一个字符串中是否包括另一个字符串    function IsCOMClassRegistered(GUID:TGUID):Boolean;//判断一个COM对像是否已注册    Function IsBDEInstalled:boolean;//查看BDE是否安装    function GetPYIndexChar( hzchar:string):char;//得到汉字的首字母    Function Squ(X,Y:integer):integer;overload;//计算x的Y次方    Function Squ(X:Double;Y:integer):Double;overload;//计算x的Y次方    Function RandomNumByGUID:String;  //--------------系统功能------------    Function AppRunOnce:Boolean;//让程序只能运行一个实例    procedure AutoRunByReg(FileName:string='');//让程序自动运行    procedure DelAutoRunByReg(KeyName:string='');//删除一个自启动项    procedure MoveWindow(handle:Thandle);overload;//托动无标题窗体    Function GetAppPath(AddLastName:string=''):string;//得到程序的当前目录    Procedure ReMoveWinTitle(Form:Tform);//移去窗体的Title;    procedure BeepEx(Freq:Word;MSecs:LongInt); //DoBeep调用    procedure ClickStartMenu;//通过代码击活开始菜单    procedure OpenScreenSave;//打开屏幕保护   // procedure DelTree(DirName:String);//删除目录    procedure DeleteDir(SourcePath: String); //删除指定文件夹(含子文件夹),文件夹及其夹内文件可以具有只读或隐藏属性    procedure DelSelfApp;//程序在运行完后就删除自己    (*-----------------*)    procedure HideTaskBar(bHide:boolean=False);//显示或掩藏TaskBar    procedure DisplayOFFON(SW: boolean);//关闭和打开显示器    procedure HideDesktop(sw:Boolean=false);//显示和隐藏桌面    procedure HideDesktopAndTaskBar(sw:Boolean=false);//同时隐藏桌面和任务栏    procedure HideTrayNotify(sw:Boolean=false);//隐藏系统通知区域    procedure HideWinButton(sw:Boolean=false);//隐藏开始按钮    procedure HideQuickLaunchBar(sw:Boolean=false);//隐藏快速启动按钮栏   //  procedure HideAppInTastWin(sw:Boolean=False);//使程序在任务管理器中隐藏    procedure DisbleQuikKey(sw:boolean=false);//屏蔽ALT+F4和ALT+Ctrl+Del    Function GetTaskBarHeight:integer;//得到任务栏的高度 //------------------------------------------------------------------------------    function GetDesktopListViewHandle: THandle; { 得到桌面列表试图的句柄 }    procedure MinWinAll;//最小化所有的窗体    procedure CloseWinAll;//关闭所有窗体    procedure DrawWindowRect(handle: Thandle;wColor: Tcolor=clBlack;PenWidth:integer=1);//给窗体加个边框    Procedure SetParentWinDefFont(Sender:TObject;const defFont:Tfont=nil);//设置parent窗体的默认字体    {得到memo中光标所在的位置,行号,行长}    procedure GetMemoMousePos(m:Tmemo;var posValue:TmemoPos);overload;    procedure GetMemoMousePos(m:TRichEdit;var posValue:TmemoPos);overload;    //Memo翻页    procedure setScrollPos(MHandle:Thandle;const pos:TClickType=PageDown);overload;    //得到指定窗体的大小    procedure GetWinRect(const WinHandle:HWND;var winRect:TwinRect);    procedure TimeDelay(DT:Dword);//精确毫秒级延时    procedure SetIPaddress(SIP: TNetValue;const isAuto:boolean=false);//设定网络Ip地址    Function GetLocalIP:string;//得到本机的IP地址    Procedure OpenURL(URL:string);//打开1个web URL //============================================================================== // 这一部分的函数摘自其他作者处.姓名不详 //==============================================================================    function GetDisplayFrequency: Integer; //获取显示刷新率    function GetIdeSerialNumber: String; //获取第一个硬盘的序列号    function GetCPUSpeed: Double; //获取当前CPU速率    Function GetCPUID:string; //获取CPU ID    Function GetCPUVendor: string; //获取CPU 类型    Function GetFileLastAccessTime(sFileName:string):TDateTime; //获取文件最后访问日期和时间    Function GetFileCreateTime(const strFileName:string):TDateTime; //获取文件创建时间    Function GetFileModifyTime(const strFileName:string):TDateTime; //获取文件修改时间    Function GetDNSTOIP(DNSName:String):String; //把域名转化为IP地址    Function GetDNSName(IPAddress:String):String; //把IP地址转化为域名
API之网络函数1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件 FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行 GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性 GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度 GetFileTime 取得指定文件的时间信息 GetFileType 在给出文件句柄的前提下,判断文件类型 GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧