-----------------------------------------------------------------------------------
将自己碰到的问题的解决方法列出,希望能给遇到相同问题的朋友方便。
2007-11-09,modified by Sunwill.
------------------------------------------------------------------------------------
1.如何修改对话框及其他控件的背景颜色和文本颜色
增加CTLCOLOR事件,并在OnCtlColor函数中增加如下几行:
if(nCtlColor==CTLCOLOR_DLG) //所有对话框
{
HBRUSH brush=CreateSolidBrush(RGB(255,255,204));
return brush;
}
else if(pWnd->GetDlgCtrlID() == IDC_STATIC1 )//资源ID为IDC_STATIC1
{
HBRUSH brush=CreateSolidBrush(RGB(25,25,24));
pDC->SetTextColor(RGB(25,255,204));//设置文本颜色
pDC->SetBkMode(TRANSPARENT);//设置文本背景为透明
return brush;
}
else if(nCtlColor==CTLCOLOR_STATIC) //所有STATIC控件
{
HBRUSH brush=CreateSolidBrush(RGB(25,255,204));
pDC->SetBkMode(TRANSPARENT);
return brush;
}
…
2.如何修改对话框背景图片
增加EraseBkgnd事件,并将OnEraseBkgnd函数的内容改为:
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
CRect rect;
//GetClientRect(&rect);
GetWindowRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
return TRUE;
(如果没有WM_ERASEBKGND消息,则到view->Classwizard->Class Info->Message Filter的位置选择 Window,因为这个消息是WINDOW消息不是对话框消息 )
3.如何使用PICTURE控件
将图片bmp作为资源插入工程中,在picture控件属性页中type项选择bitmap项,在image项选择相应的资源id
4.若某个控件如按钮被其他控件挡住了,怎么设置才能显示
将改控件的Transparent选项钩上
5.隐藏对话框
增加 ShowWindow(SW_HIDE);
6.设置程序不能重复运行
增加如下几行:
HANDLE m_hMutex;
m_hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"sunwill");
if(m_hMutex==NULL)
CreateMutex(NULL,TRUE,"sunwill");
else
{
//MessageBox("程序已经运行!");
CDialog::OnCancel();
return;
}
7.获取进程的信息
#include <tlhelp32.h>
//根据进程名称删除进程的例子
void KillProcessByName(CString sProcessName)
{
CString pname;
HANDLE handle ;
PROCESSENTRY32 procinfo;
handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
procinfo.dwSize = sizeof(PROCESSENTRY32);
//获取第一条进程(一般为系统进程)
Process32First(handle, &procinfo);
do
{
pname.Format("%s",procinfo.szExeFile);
//procinfo.th32ProcessID 是进程ID
if(pname == sProcessName)
{
HANDLE handle1;
Handle1 = OpenProcess(PROCESS_ALL_ACCESS,FALSE,procinfo.th32ProcessID);
::TerminateProcess(handle1,0);
}
}while(Process32Next(handle, &procinfo));//下一条进程
}
8.开机自动运行程序
BOOL SetAutoRun(CString strPath)//开机自动运行
{
CString str;
HKEY hRegKey;
BOOL bResult;
str=_T("Software//Microsoft//Windows//CurrentVersion//Run");
if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKey) != ERROR_SUCCESS)
bResult=FALSE;
else
{
_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_ PATH+1),NULL);
strPath.ReleaseBuffer();
str.ReleaseBuffer();
if(::RegSetValueEx( hRegKey,
str,
0,
REG_SZ,
(CONST BYTE *)strPath.GetBuffer(0),
strPath.GetLength() ) != ERROR_SUCCESS)
bResult=FALSE;
else
bResult=TRUE;
strPath.ReleaseBuffer();
}
return bResult;
}
9.ListBox自动滚到最后一行
增加一行代码:list->SetTopIndex(list->GetCount()-1);//显示最后一行
10.VC文件操作
FILE * fp;//声明文件操作对象指针
fp=fopen(“filename”,"a+");//以追加方式打开文件
if(fp!=NULL) //continue;
{
fwrite(str,str.GetLength(),1,fp);//将str 追加到文件中
fwrite("/n/r",3,1,fp);//换行
}
fclose(fp);//关闭文件操作
11.如何弄个分隔线
用控件picture拉扁一点就成了很漂亮个分隔线
12. 使控件不显示和不可用
举个按钮的例子其他一样:
CButton *button = (Cbutton*)GetDlgItem(IDB_BUTTON1);
button->ShowWindow(0);//不显示控件
button->ShowWindow(1);//显示控件
button->EnableWindow(0);//使控件不可用
button->EnableWindow(1);//使控件可用
13.ListBox控件增加内容和清空内容
listbox->AddString(“abcdefghijklmn”);//增加一行内容
listbox->ResetContent();//清空内容
14.有控件存在的情况下在对话框工程中捕获键盘事件
(1)普通键
在ClassWizard那边选择PreTranslateMessage并增加该函数,然后在该函数中增加:
if( pMsg->message == WM_KEYUP)
return SendMessage( WM_KEYUP, pMsg->wParam, pMsg->lParam ); //
然后在OnKeyUp()函数中对相应的键做处理,如:
if(nChar>=0x30 && nChar<=0x39)
{
//做相应的处理
}
(2)上面的方法只对普通键有效,对系统键像F10,ALT则无法捕获,应该在PreTranslateMessage中增加如下的代码:
if(pMsg->message == WM_SYSKEYUP)
return SendMessage( WM_KEYUP, pMsg->wParam, pMsg->lParam );//
然后在OnSysKeyUp()中做相应的处理.
15.在VC中控制LED灯:
可用模拟键盘事件来实现,比如要控制NUMLOCK的灯,则可用如下函数
void SetNumLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if((bState && !(keyState[VK_NUMLOCK] & 1)) || (!bState && (keyState[VK_NUMLOCK] & 1)) )
{
//Simulate a key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
//Simulate a key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
16 如何动态更改STATIC的背景颜色和文本颜色
在第1点已经介绍了更改STATIC的背景和文本颜色的方法. 如果要动态更改,比如按钮更改,那可以多弄个变量比如int m_nColor ,在按钮中增加
{
m_nColor = 1;//你想要设置的值
SendMessage(WM_CTLCOLORSTATIC,0,(LPARAM)m_hWnd);//发送消息
Invalidate();//重绘,这个很关键
}
然后在OnCtlColor函数中对变量值进行判断, 根据变量值改变颜色.
相关推荐
使用Matlab进行IEEE 33节点潮流计算的NR法实现详解及应用实例
IEEE 33节点系统是一个标准的配电系统模型,广泛用于学术研究和工程应用。该系统由33个节点和37条线路组成,结构复杂,具有代表性。其潮流计算结果可用于验证各种潮流计算方法的准确性和效率。NR法是一种基于迭代求解的潮流计算方法,通过不断迭代求解非线性方程组,直到达到预定的收敛条件。NR法具有收敛速度快、计算精度高的优点,适用于大规模复杂电力系统的潮流计算。
VC小技巧20个(转)
VC小技巧20个一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio doo...
微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]
(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。
vc 小技巧1
整理中。。。。
《缠中说禅108课》5:市场无须分析,只要看和干
喜欢吹牛皮的,在市场里最常见,例如一种以分析市场、吹牛皮为生的职业,叫什么股评、专家的。此类人不过是市场上的寄生虫,真正的猎手只会观察、操作,用嘴是打不了豺狼的。 市场就是一个狩猎场,首先你要成为一个好猎手,而一个猎手,首先要习惯于无言。如果真有什么真理,那真理也是无言的。可言说的,都不过是人类思想的分泌物,臭气熏天。真不可言说了,就无不可言,言而无言,是乃真言。 一个好的猎手,可以没有嘴巴,但一定会有一双不为外物所动的眼睛,在这眼睛下,一切如幻化般透明。要不被外物所动,则首先要不被自我所迷惑,其实..
Isaac Gym环境安装和四足机器人模型的训练
该方法提出一种训练模式,该模式通过在单个GPU工作站上使用大规模并行的方法来实现现实世界机器人任务的快速控制策略的生成。
VC开发小技巧20个
作者: kind_li(原作) VC开发小技巧20个一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersi
PyMOL下载安装教程(附安装包)2025最新版(PyMOL 3.0.3)
本文详细介绍了Windows系统下PyMOL分子建模软件的安装教程。主要内容包括:提供安装包下载链接,强调需关闭杀毒软件;分步骤讲解管理员身份运行安装程序、接受协议、选择安装路径等安装流程;重点说明如何配置隐藏文件夹ProgramData中的许可证文件;最后提供基础使用技巧和常见问题解决方案。该教程适用于需要制作高质量分子结构图的科研人员和新手用户,帮助完成软件部署并顺利开展工作。
VC小技巧20个
基础类VC小技巧20个 一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("
绕过ROS2!在RDK X5上直接用Python调用海康相机C++ SDK的避坑指南
本文详细介绍了在RDK X5上绕过ROS2,直接使用Python调用海康相机C++ SDK的轻量化方案。通过Cython构建Python绑定,提取海康相机SDK核心组件,实现高效图像采集。文章涵盖环境准备、Cython接口设计、编译系统配置及性能优化技巧,特别适合ARM64平台开发者。
第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR
:用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。
VC开发20个小技巧
作者: kind_li(原作) 关键字 技巧 VC VC开发小技巧20个一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersion
1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)
1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。
札记-VC使用小技巧
VC使用的小技巧一、自定义类型 添加或修改 /Program Files/Microsoft Visual Studio/COMMON/MSDev98/Bin下的usertype.dat文件,每行加上自定义的类型,比如BOOL,boolean, java, tomcat等二、非缺省的语法着色(更多的颜色) 修改注册表 regedit H
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
VC小技巧15个
VC小技巧15个king fan2002/12/6一、 一次只运行一个程序实例下列两种方式都可以实现,建议采用第二种方式:1、 if( FindWindow(NULL,"程序标题")) exit(0);2、BOOL CDemoTBarEApp::InstanceIsRun(){ HANDLE m_hMutex; m_hMutex = ::CreateMutex(NULL, T
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
VC6.0若干实用小技巧
VC中加快链接的小技巧
这个小技巧vc的补充资料(VCREAD.HTM)提供的,内容是有效地使用链接器参数:/OPT:ICF,这个参数的主要作用是通过removes相同的COMDAT记录,以便缩小从链接器产生的可执行文件的大小。在VC 的IDE中,如果选择了链接参数 /OPT:REF,那么 /OPT:I
VC小技巧(三)视图
VC小技巧(三)视图 1. 如何得到视图指针 [ 问题提出] 现在你有一个多线程的Demo, 你想在多线程里处理视图指针里的函数, 我们给这个函数起个名字:Put(); 该如何实现呢? // 有两种方法可以实现你的要求: //1) 第一种方...
VC6.0小问题和小技巧
介绍VC6.0小问题和小技巧1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。2.查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上
20个VC开发小技巧
//一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); //二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); //三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数...
VC程序调试的小技巧
VC程序调试的小技巧<br />调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。<br /> 本文简要的列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单open。<br /><br />1 设置<br /> 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configura
VC的一些小技巧
VC的一些小技巧 1、刷新窗口 RedrawWindow(NULL, NULL,RDW_INVALIDATE | RDW_ERASE ); 2、设置对话框背景颜色在InitInstance函数(CChatAPP类中)中的m_pMainWnd = &dlg;下面加入SetDialogBkColor(RGB(240,128,128),RGB(0,0,0));R
使用VC编辑器的一些小技巧
◎VC工具问题,编辑时成员变量和函数不显示提示?通常输入类的对象,按“.”会出现该类的提示,函数按“("也会有参数提示,如果没提示,对菜鸟来说就要傻眼了。怎么办呢?关闭工程,到工程目录下删除××.ncb文件,再重新打开就OK了:)举一反三:有时遇到添加删除类多次后造成混乱,CLASS WIZARD出问题时,也可以去删除掉××.clw(这个文件实际是INI格式,可以手工修改,我不是高手,不会直接手动
2070



被折叠的 条评论
为什么被折叠?



