[添加][按钮][控件]请问如何使一个添加到按钮控件上的picture控件(加载了ICON图标)一直显示。我在对话框的初始化函数中做了如下
09月 16th, 2008 by admin
Posted in VC/MFC | No Comments »
HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON);
m_static.SetIcon(hIcon);
初始运行时,按钮控件和加载了图标的picture控件都能显示,但当点击按钮控件时,picture就不显示了。
我想让picture控件一直显示,请问高手怎么来实现。谢谢
把按钮加上WS_EX_TRANSPARENT扩展风格试试。
怎么加扩展风格,加扩展风格什么用?
你直接给按钮设置图标不就行了,何必再用一个控件覆盖?
在对话框资源上选择按钮,然后在属性窗口设置transparent。
如果用代码,先获得按钮指针或对象,然后ModifyStyleEx。
谢谢你的回复。你说的那种情况,我试过了。但是因为有个动态按钮,即初始显示“修改”,点击之后变成“保存”,按照你说的那样做,修改和保存会同时显示。
我就想在一个按钮的部分空间上贴上一个小的图片,让图片一直显示,不好实现吗?
你那picture控件是按钮的子窗口吗?还是直接放在了对话框上?
我先前做的不是按钮的子窗口,是直接放到对话框上的。请问怎么解决呢?
用SetParent设置一下。
控件之间如何进行SetParent呢?我想把IDC_BUTTON设置成为IDC_STAITC的父窗口,请问可以吗?代码应该怎么来写。
这样设置的话,会不会让static一直在button控件上显示(static上加载了图标)。就是让按钮美观,直观。
直接给按钮设置图标
用SetParent设置一下
[控件][按钮][属性]控件问题为什么我在按钮属性样式里改了 “缺省按钮”一按回车还是响应到OK
09月 14th, 2008 by admin
Posted in VC/MFC | No Comments »
OnOk 不好做空
VC技术内幕的例子 不行啊
那么说VC++技术内幕错了
或者版本问题 他们用VC5.0 我用的VC6.0
就是技术内幕上把OnOk架空然后该OK键ID映射新的处理函数是错的
我试两边了不行
这个解决方法很好
结贴
[串口][通信][按钮]串口通信问题VC中如何用一个按钮实现多个数组的发送
09月 11th, 2008 by admin
Posted in VC/MFC | No Comments »
我用SerialPort类编写串口通信程序,定义数组c[8]并初始化,用WriteToPort写入串口,现在我想通过一个按钮“发送数据”,实现两个不同数组的发送,先发c[8],在发a[8],要怎么实现。我的程序是
void CSerialPortTestDlg::OnButtonSend()
{
char c[8];
c[0]='xA4';
…
c[7]='x22';
m_port.WriteToPort((LPCTSTR)c);
char a[8]
a[0]='x12';
…
a[8]='x56';
m_port.WriteToPort((LPCTSTR)a);
}
谢谢,原来是缓冲区覆盖,我在数组织之间加了Sleep(2000),程序运行后就会先延时2秒,再同时发出去,我该怎么做才能保证先发一个数组,延时,再发另一个数组
正解
我以前也遇到过这样的问题
在要发送的数组中间sleep下就可以了
我一般不同sleep
用定时器
WriteToPort(数组1)
settimer(1,2000,Null);
在timer消息里面
WriteToPort(数组2)
但是如果我要发多于两个的数组,且之间延时不同该怎么写
正解
我以前也遇到过这样的问题
在要发送的数组中间sleep下就可以了
[/Quote]
是要这样写吗?
void CSerialPortTestDlg::OnButtonSend()
{
char c[8];
c[0]='xA4';
…
c[7]='x22';
m_port.WriteToPort((LPCTSTR)c);
Sleep(2000);
char a[8]
a[0]='x12';
…
a[8]='x56';
m_port.WriteToPort((LPCTSTR)a);
}
但是运行后点击按钮,会先延时在同时发出两个数组
[新手][按钮][一个一个]新手的问题.关于按钮一个一个点亮的问题/
09月 4th, 2008 by admin
Posted in VC/MFC | No Comments »
我有30个按钮.全是绿颜色的.
现在需要点一个总按钮,将这30个安钮按顺序边成红颜色的..
该怎么弄啊?
写原代码就马上给分。…在线等
我是新手 看不太明白..原代码有吗??
为什么一定要源代码呢??
先说说你的绿色是怎么实现的。
在类中用变量记录按钮的颜色,在按钮的父窗口中响应WM_CTLCOLOR,创建相应的画刷返回,改变颜色时先修改变量的值,再调用Invalidate刷新按钮。
[按钮][实现][Vista]按钮实现像Vista的效果
09月 2nd, 2008 by admin
Posted in VC/MFC | No Comments »
自定义button,要求是要实现像VISTA按钮的那种一样,鼠标在按钮区域的时候按钮就亮了,用GDI+实现这个效果,我尝试过用路径渐变话刷做的,但是效果很差,因为按钮的颜色不同画刷的颜色我也没办法确定,做出来后按钮的颜色不同那种点亮的效果也就很差,最后我尝试这用颜色矩阵做,做出来是按钮变亮了,但是是全部button区域都变亮了,像白色那种亮,感觉效果还是不好,问题是始终想不通人家那个按钮效果是咋样弄出来的
大多数都是用贴图来实现的,楼主可以参考下ButtonXP、CButtonST等自绘按钮的做法。
纯粹靠代码来实现按钮的明亮和灰暗,效果很不好
codeproject上 有一个C#的
用GDI+画出来的, 其实只要颜色啊 样式啊控制好了 就可以画出来了
再有就是按钮的形状了, 因为不是规则的矩形, 你可以自己创建HRGN来实现不规则的按钮
贴图是最简单的方法,不过这种方法依赖于外部资源,
恩,谢谢大家的指点,我也和我们领导谈了换图片,结果。。。谢谢大家
没给分的2位别生气。。。我分不够了,就给前面的先给了。。。你们的分有了后一定给你们补上
[按钮][设置][disabled]当按钮设置为disabled=true时 鼠标移动控件上时如何为按钮显示提示信息
08月 29th, 2008 by admin
Posted in VC/MFC | No Comments »
当按钮状态设置为 disabled=false 时 ,鼠标移到上面能够提示信息
但是disabled=true 就不提示了
请问要这两种状态都能够有提示,该怎么实现啊 ???
我用的工具是vc++.net 2003 ,做的是一个MFC 应用程序。
因为disabled的窗口的很多消息都被屏蔽了,你可以维护一个内部的状态来模拟被disabled的窗口,但不是真正的disabled,但是你要做很多的消息处理,比如绘制方法、鼠标和键盘消息的屏蔽。
实现这样一个小功能是不是 很复杂啊 ??
我是在对话框中的工具栏中显示提示的,disable了后也可以提示,具体怎么回事我不太清楚,实现过程大概是这样的:
.h文件中添加:
//——————————————————————————-
protected:
//{{AFX_MSG(CUSDLG)
…….
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//——————————————————————————–
.cpp文件中添加:
//——————————————————————————–
BEGIN_MESSAGE_MAP(CUSDLG, CDialog)
//{{AFX_MSG_MAP(CUSDLG)
……
//}}AFX_MSG_MAP
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW,0,0xFFFF,OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA,0,0xFFFF,OnToolTipText)
END_MESSAGE_MAP()
//——————————————————————————–
.cpp文件中添加函数实现部分:
//——————————————————————————–
BOOL CUSDLG::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA ¦ ¦ pNMHDR->code == TTN_NEEDTEXTW);
if (GetRoutingFrame() != NULL) return FALSE;
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ¦ ¦
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
nID = ::GetDlgCtrlID((HWND)nID);
}
if (nID != 0)
{
AfxLoadString(nID, szFullText);
strTipText=szFullText;
#ifndef _UNICODE
if (pNMHDR->code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#endif
*pResult = 0;
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE ¦SWP_NOSIZE ¦SWP_NOMOVE ¦SWP_NOOWNERZORDER);
return TRUE;
}
return FALSE;
}
//——————————————————————————–
我这样添加后,对话框上的按钮在任何情况下都会显示提示。不知道你的具体应用环境是怎么样的,借鉴一下看行不行,呵呵。
哎呦 我的是工具栏上的按钮 不是一般的Button 不知道对Button有没有用 你自己试试吧
fuck
靠,fuck也想要分
他奶奶地 ,不就50分吗?? 给你算了
[绘制][按钮][文字]绘制按钮内文字的下划线
08月 26th, 2008 by admin
Posted in VC/MFC | No Comments »
我想在mousemove的时候给按钮的标题加上下划线. 标题是居中显示的, 问题是有什么简便的方法可以得到文字左下方的坐标. 得到该坐标后我就可以line to画一条线了.
CFont里面有对underline的支持吧?
有对underline的支持。ls的意思是自定义字体?
自绘,自Font
字体的underline似乎不可以定义颜色和大小? 我用( 按钮的高度 - 字符高度)/2 + 字符高度+ 往下偏移一个向素, 成功得到y 坐标.
同理, X坐标 我通过: ( 按钮的宽度 - 标题字符串的宽度)/2 得到, 照理由应该是标题第一个字符的起始x坐标的, 但是有些错误.应该是我计算
字符串的宽度时方法有误? 我是这样计算的: 字符的宽度*字符个数. GetTextMetrics得到的tmAveCharWidth = 5 , 而tmMaxCharWidth = 26 ,
我的是中文字符,一个值太小,一个又太大,奇怪!!
加分了. 再问一个问题:
大家都看过VC新建MFC项目工程时的向导. 左边的按钮在鼠标移到时产生下划线, 选中状态的按钮有个阴影. 我现在做的就是模仿这个向导的. 鼠标移进移出按钮下划线出现与消失我已经做好了.
现在我的问题是在主对话框点击下一步时,如何使左边的按钮也相应的变化?! 我有试过用m_btn1.SendMessage(WM_LBUTTONDOWN,NULL,NULL),可以设置选中状态, 但是有个不好处就是连下划线也画出来了. 我尝试继续发送MouseLeave,但是下划线却并不消失. 怎么办??
还有就是, DrawItem 都是什么时候被调用的,为什么我在主对话框晃动鼠标(并没碰到按钮),按钮却会闪烁?
发贴一天后才可以加分.倒.. 问题补充: 是 VS 2003以上版本的新建项目的向导.
?
支持1楼的方法
[CPropertySheet][确定][按钮]CPropertySheet下确定按钮旁边创建一个editbox.rect怎么控制
08月 24th, 2008 by admin
Posted in VC/MFC | No Comments »
目前我这样做
OnInitDialog里GetDlgItem(IDOK)后,再用GetWindowRect(确定按钮)取得确定按钮的位置大小,得一个rect,
每次创建editbox前都要用“眼睛观察",然后相就的rect.left-x,rect.top+/-x;
当整个属性页大小变化了(实际上是另一个属性页,基类用的CMySheet,派生CPropertySheet,这个位置就不对了
[设定][工具][按钮]【请问】是否能直接 设定 工具栏 按钮 enable/disable
08月 20th, 2008 by admin
Posted in VC/MFC | No Comments »
VC下,现在用ON_UPDATE_COMMAND_UI。
但是发现,不能达到预期效果:有时该disable掉了,没有disable掉;应该是enable的没有enable;有时对应的菜单有预期的效果,但是toolbox却不行。
还有什么更好的办法呢?
其他方法么。应该也可以有的。
只是不太正规。
1、创建一个CMenu,用代码添加每一个菜单项
Enable:
添加的时候指定对应的ID
Disable:
添加的时候ID项写NULL
2、删除主菜单,并释放对应内存
3、把新创建的CMenu插入,作为主菜单
一劳永逸的方法。不过维护麻烦。
问题起由见我发的另外一个贴:【再次急问】 关于工具栏的 ON_UPDATE_COMMAND_UI的命令响应
现在问题解决,我觉得还是因为定时器不断的发消息,窗口进行处理,所以OnIdle中没有机会更新UI。
所以,曲线救国,再放大缩小的时候,先把定时器停止下来,Speed改变以后,再设置定时器。
谢谢各位热心帮助。
我现在总共只有20分,不能给兄弟们都加上了,望兄弟们海涵,等攒够了,一定给各位加上,见谅
[修改][按钮][颜色]VC修改按钮颜色是使用COLORREF SetBKColor(HDC hdc, COLORREF crColor)吗
08月 6th, 2008 by admin
Posted in VC/MFC | No Comments »
我使用的VC的API编程环境编写了一个程序,我想修改按钮的颜色,怎样解决这个问题呀?
后来我尝试使用函数COLORREF SetBKColor(HDC hdc, COLORREF crColor),但是不起作用呀?
具体代码如下
SetBkColor(BeginPaint(GetDlgItem(hwnd,IDC_RADIO1), &ps),RGB(255,0,0));
这个HDC是怎么样获得呀?
请大家给我一个解决一下。或者给我说一下怎么样修改按钮颜色?
我是使用的API编程,谢谢各位高手。
急急急急急急。。。。。。。。。。。。。。。。。