ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:255.36KB ,
资源ID:9698189      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9698189.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VC小问题解决方法.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VC小问题解决方法.docx

1、VC小问题解决方法问题一: 英文版的VC运行时候中文出现乱码的解决 首先进入资源编辑状态ResourceView然后选中有中文显示的界面项目(如对话框,菜单,窗口等)再从VC工程的菜单栏中的View项中找到属性Properties,点击弹出对话框,设置对话框里的Language项为:Chinese(P.R.C)即可。问题二:如何获得窗口的大小?CRect S;GetWindowRect(S);/获得窗口相对于屏幕的坐标位置S.top;s.left;s.Right;s.bottom;/left,top是窗口左上角的横坐标和纵坐标/right,bottom代表的是串口的右下角的横坐标和纵坐标自己计

2、算下位置就可以了最后用MoveWindow();GetWindowRect() 得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点) GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)问题三:如何绘制一个简单的按钮并且映射函数 绘制按钮函数问题四:对于线程和进程的理解进程与线程的一个简单解释1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个C

3、PU一次只能运行一个任务。3.进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4.一个车间里,可以有很多工人。他们协同完成一个任务。5.线程就好比车间里的工人。一个进程可以包括多个线程。6.车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。7.可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。8.一个防止他人进入的简单方法,就是门

4、口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。这就叫互斥锁(Mutual exclusion,缩写 Mutex),防止多个线程同时读写某一块内存区域。9.还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。10.这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。这种做法叫做信号量(Semaphore),用来保证多个线程不会互相冲突。不难看出,mutex是semaphore的一种特殊情况(n=

5、1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。操作系统的设计,因此可以归结为三点:(1)以多进程形式,允许多个任务同时运行;(2)以多线程形式,允许单个任务分成不同的部分运行;(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。1、HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,L

6、PVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下:lpThreadAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针,该结构决定了线程的安全属性,一般置为 NULL;dwStackSize:指定了线程的堆栈深度,一般都设置为0;lpStartAddress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况为(LPTHREAD_START_ROUTINE)ThreadFunc,Thread

7、Func 是线程函数名;lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数;dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;lpThreadId:该参数返回所创建线程的ID;如果创建成功则返回线程的句柄,否则返回NULL。2、DWORD SuspendThread(HANDLE hThread);该函数用于挂起指定的线程,如果函数执行成功,则线程的执行被终止。

8、 3、DWORD ResumeThread(HANDLE hThread);该函数用于结束线程的挂起状态,执行线程。 4、VOID ExitThread(DWORD dwExitCode);该函数用于线程终结自身的执行,主要在线程的执行函数中被调用。其中参数dwExitCode用来设置线程的退出码。 5、BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用TerminateThread强行终止某一线程的执行。各参数含义如下:hThread:将被终结的线程的句柄;dwExi

9、tCode:用于指定线程的退出码。使用TerminateThread()终止某个线程的执行是不安全的,可能会引起系统不稳定;虽然该函数立即终止线程的执行,但并不释放线程所占用的资源。因此,一般不建议使用该函数。6、BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);该函数将一条消息放入到指定线程的消息队列中,并且不等到消息被该线程处理时便返回。idThread:将接收消息的线程的ID;Msg:指定用来发送的消息;wParam:同消息有关的字参数;lParam:同消息有关的长参数;调用该函数时,如

10、果即将接收消息的线程没有创建消息循环,则该函数执行失败问题五:怎么样在单文档中添加控件 建立一个单文档,在向导的最后一步把基类改成CFormViewl 这样就可以实现在单文档中添加控件。问题六:怎么样在单文档中做出一个串口程序 在VC6中可以通过打开“Project-Add to Projcet-Components and Controls-Registered Active Controls”菜单项来选择Microsoft Communications Control,Version6.0命令将MSComm控件插入到当前的程序中。同样在VC7中,通过在工具箱中单击“添加/移除项”在弹出对话

11、框中COM组件中把Microsoft Communications Control,Version6.0项勾上按确定就可以了。完成以上步骤后,就在工具箱中有了MSComm控件,将其拖到任何一个对话框中就可以实现添加MSComm控间资源的任务。假设我们将其命名为IDC_MSCOMM。2、为控件资源创建MSComm的实例对象由于文档没有初始化函数,所以我选择在View的OnCreate函数中为IDC_MSCOMM创建实例化对象。具体就是在OnCreate函数中添加以下代码:if (!m_Comm.Create(NULL,WS_VISIBLE|WS_CHILD,CRect(0,0,0,0),this

12、,IDC_MSCOMM)AfxMessageBox(创建串口失败!);m_Comm.SetCommPort(m_nCom);/设置Com口m_Comm.SetInBufferSize(1024);/设置输入缓冲区大小m_Comm.SetOutBufferSize(512);/设置输出缓冲区大小if (!m_Comm.GetPortOpen()m_Comm.SetPortOpen(TRUE);/如果串口没有打开则打开串口m_Comm.SetInputMode(1);/设置输入方式为二进制方式m_Comm.SetSettings(4800,n,8,1);/设置串口特征如波特率等m_Comm.Set

13、RThreshold(1);/当接收一个字符就响应一个OnCom事件m_Comm.SetInputLen(0);/3、为控件资源添加相应的事件处理程序本人在编程时需要串口接收的数据用在文档类中,所以在此步的操作为:右键IDC_MSCOMM添加事件处理程序,在类列表中选择doc类,IDE就会自动为你添加相应的绑定代码和OnComm函数,你只需在该函数中添加具体的你的实现代码就可以了。提供程序如下:CArcMeasureView* pView =(CArcMeasureView*)(CMainFrame*)(CArcMeasureApp*)AfxGetApp()-GetMainWnd()-GetA

14、ctiveView();/取得视图指针地址VARIANT m_input;char *str;int k,nEvent;CString str2,m_RevData;nEvent =pView-m_Comm.GetCommEvent();/获得事件类型switch(nEvent)case 2: /如果接受到字符k = pView-m_Comm.GetInBufferCount();if (k0)m_input = pView-m_Comm.GetInput();str = (char*)m_input.parray-pvData;if (*str=H)/处理程序break;当然假如你接收的数据

15、要在View类里处理的话,那么比我以上代码还要简单,直接可以在以上类列表中选择View类即可。并在View类的OnComm函数中添加具体的代码。 论坛 C+学习基础VC6.0中如何改变对话框的背景颜色2006-07-03 06:30:48来源:互联网- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下:- 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。- 在CExampleDlgApp :InitIns

16、tance()中添加如下代码:BOOL CExampleDlgApp: : InitInstance ( )CExampleDlgDlg dlg;m_pMainWnd = &dlg;/先于DoModal()调用,将对话框设置为蓝色背景、红色文本SetDialogBkColor(RGB(0,0,255),RGB(255,0,0);int nResponse = dlg.DoModal();- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对

17、话框。- 方法二:重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准):void CExampleDlgDlg:OnPaint()if (IsIconic() else CRect rect;CPaintDC dc(this);GetClientRect(rect);dc.FillSolidRect(rect,RGB(0,255,0); /设置为绿色背景CDialog:OnPaint(); - 方法三:重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准):-

18、 在CExampleDlgDlg的头文件中,添加一CBrush的成员变量:class CExampleDlgDlg : public CDialog.protected:CBrush m_brush;.;- 在OnInitDialog()函数中添加如下代码:BOOL CExampleDlgDlg:OnInitDialog()./ TODO: Add extra initialization herem_brush.CreateSolidBrush(RGB(0, 255, 0); / 生成一绿色刷子.- 利用ClassWizard重载OnCtlColor(),即WM_CTLCOLOR消息:HBR

19、USH CExampleDlgDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)/* 这里不必编写任何代码!*下行代码要注释掉* HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);*/return m_brush; /返加绿色刷子- 方法四:还是重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准):- 步骤、同上方法三中的步骤、。- 步骤利用ClassWizard重载OnC

20、tlColor()(即WM_CTLCOLOR消息)时则有些不同:HBRUSH CExampleDlgDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/在这加一条是否为对话框的判断语句if(nCtlColor =CTLCOLOR_DLG)return m_brush; /返加绿色刷子return hbr;在想使用CButtonST的工程中加入BtnST.h、BtnST.cpp、BCMenu.h、BCMenu.cpp4个文件、2个类。1

21、. 在按钮上加入Icon,使Icon和文字同时显示假设按钮ID为IDC_BUTTON1a. 添加成员变量 CButtonST m_btn;b. 添加Icon资源,设其ID设为IDI_ICON1c. 在OnInitDialog函数中初始化按钮m_btn.SubclassDlgItem(IDC_BUTTON1,this);m_btn.SetIcon(IDI_EOAPP);m_btn.SetFlat(FALSE);注意:为达到最好效果,请根据Icon的大小调整按钮的大小。2. 显示平面按钮只需要在效果一的基础上把m_btn.SetFlat(FALSE);语句去掉。3. 使按钮上的图标可变假设按钮ID

22、为IDC_BUTTON11). 添加成员变量CButtonST m_btn;2). 添加两个Icon资源,ID设为IDI_ICON1和IDI_ICON2IDI_ICON1是普通状态的图标,IDI_ICON2是按下时的图标3). 在OnInitDialog函数中初始化按钮m_btn.SubclassDlgItem(IDC_BUTTON1,this);m_btn.SetIcon(IDI_ICON2,IDI_ICON1);4. 设置按钮在不同状态下的底色和文字颜色假设按钮ID为IDC_BUTTON11). 添加成员变量 CButtonST m_btn;2). 添加Icon资源,设其ID设为IDI_I

23、CON13). 在OnInitDialog函数中初始化按钮 m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetColor(CButtonST:BTNST_COLOR_BK_OUT, RGB(208,208,208); m_btn.SetColor(CButtonST:BTNST_COLOR_BK_FOCUS, RGB(208,208,208); m_btn.OffsetColor(CButtonST:BTNST_COLOR_BK_IN, 30);提示:SetColor函数和OffsetColo

24、r函数的第一个参数表示按钮的各个状态,前景色就是文字的颜色,它们的取值表示: BTNST_COLOR_BK_IN /鼠标放在按钮内时的背景色 BTNST_COLOR_FG_IN, /鼠标放在按钮内时的前景色 BTNST_COLOR_BK_OUT, /普通状态时的背景色 BTNST_COLOR_FG_OUT, /普通状态时的前景色 BTNST_COLOR_BK_FOCUS, /按钮被按下后的背景色 BTNST_COLOR_FG_FOCUS, /按钮被按下后的前景色5. 设置图标和文字的位置假设按钮ID为IDC_BUTTON11).添加成员变量 CButtonST m_btn;2).添加Icon资

25、源,ID设为IDI_ICON13).在OnInitDialog函数中初始化按钮 m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetAlign(CButtonST:ST_ALIGN_VERT);提示:SetAlign函数的第一个参数表示位置信息,缺省情况下,文字在图标右边 ST_ALIGN_HORIZ / 文字在右 ST_ALIGN_VERT /文字在下 ST_ALIGN_HORIZ_RIGHT/ 文字在左6. 根据Icon的形状设置按钮的形状假设按钮ID为IDC_BUTTON11).添加成员变

26、量 CButtonST m_btn;2).添加Icon资源,设其ID设为IDI_ICON13).在OnInitDialog函数中初始化按钮 m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.DrawBorder(FALSE); m_btn.SetColor(CButtonST:BTNST_COLOR_BK_OUT, RGB(208,208,208); m_btn.SetColor(CButtonST:BTNST_COLOR_BK_IN, RGB(208,208,208); m_btn.SetColo

27、r(CButtonST:BTNST_COLOR_BK_FOCUS, RGB(208,208,208);注意:为达到最好效果,请根据Icon的大小调整按钮的大小。并根据实际情况设置背景颜色。请事先将按钮的文字去掉。7. 添加Tooltips假设按钮ID为IDC_BUTTON11).添加成员变量 CButtonST m_btn;2).添加Icon资源,设其ID设为IDI_ICON13). 在OnInitDialog函数中初始化按钮 m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetTooltipText(_T(This is a tooltip./r/nMultiline!);8. 改变鼠标进入按钮时的形状(超链接效果)假设按钮ID为IDC_BUTTON11). 添加成员变量 CBu

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1