球求一个apple id账号MFC的账号啊

小弟刚接触MFC有许多不明白之处想询问一下各位大拿。
程序(Dialog)刚启动的时候(窗口初始化大小),不显示滚动条,当拖拽窗口的时候,窗口的大小被改变,滚动条显示,滚动条的大小随着窗口的变大变小而改变,但是窗口内的控件不随之而改变(只是窗体变小,没有显示出来,拖动滚动条来显示),当窗口变大或变小到一定程度后,不能再变大或变小了。
最好是有例子或者是代码,小弟不胜感激。
回复讨论(解决方案)
http://blog.csdn.net/popppig/article/details/8218227
网上有很多
http://blog.csdn.net/popppig/article/details/8218227
网上有很多
非常感谢回帖,但是你发的链接只是设置滚动条事件,不是我想要的效果,我想要的是我设置了一个窗口,假设高度500,宽度是1000,程序刚启动就显示这个大小,此时不显示滚动条,只要我把窗口变小就显示滚动条。
可以帮我解决一下吗
SetScrollRange函数设置所指定滚动条范围的最小值和最大值。
初始化时&max&设置到&窗口&客户区&的&宽&
SetScrollRange函数设置所指定滚动条范围的最小值和最大值。
初始化时&max&设置到&窗口&客户区&的&宽&
可以给我做一个简单的列子&我学习一下吗
以对话框工程为例:
protected:
HICON&m_hI
int&&&m_sbVertL
int&&&m_sbHorzL
//&TODO:&Add&extra&initialization&here
GetClientRect(&rc);
m_sbVertLen=rc.Height()-20;//&sb&width
m_sbHorzLen=rc.Width()-20;&//&sb&height
SetScrollRange(SB_VERT,&0,&0);
SetScrollRange(SB_HORZ,&0,&0);
void&CCheckCursorDlg::OnSize(UINT&nType,&int&cx,&int&cy)&
CDialog::OnSize(nType,&cx,&cy);
//&TODO:&Add&your&message&handler&code&here
GetClientRect(&rc);
int&vert=m_sbVertLen-rc.Height();
int&horz=m_sbHorzLen-rc.Width();
SetScrollRange(SB_VERT,&0,&vert&&0&?&vert:&0);
SetScrollRange(SB_HORZ,&0,&horz&&0&?&horz:&0);
以对话框工程为例:
protected:
HICON&m_hI
int&&&m_sbVertL
int&&&m_sbHorzL
//&TODO:&Add&extra&initialization&here
GetClientRect(&rc);
m_sbVertLen=rc.Height()-20;//&sb&width
m_sbHorzLen=rc.Width()-20;&//&sb&height
SetScrollRange(SB_VERT,&0,&0);
SetScrollRange(SB_HORZ,&0,&0);
void&CCheckCursorDlg::OnSize(UINT&nType,&int&cx,&int&cy)&
CDialog::OnSize(nType,&cx,&cy);
//&TODO:&Add&your&message&handler&code&here
GetClientRect(&rc);
int&vert=m_sbVertLen-rc.Height();
int&horz=m_sbHorzLen-rc.Width();
SetScrollRange(SB_VERT,&0,&vert&&0&?&vert:&0);
SetScrollRange(SB_HORZ,&0,&horz&&0&?&horz:&0);
感谢回答,OnSize中cx,cy没有用到,这样对吗?
按照你的回答小弟回去试了一下,效果不是很明显,程序刚启动时,的确没有显示滚动条,当窗口缩小到一定位置才显示滚动条,不是一缩小就显示滚动条,当显示滚动条后,下面的滚动条向右移动,再向右拖动窗口,窗口上显示的不正确,只显示一半对话框。
还请大神帮忙指点一下,最好有列子。
&OnSize中cx,cy没有用到,这样对吗&
“不是一缩小就显示滚动条”
m_sbVertLen=rc.Height()-20;//&sb&width
m_sbHorzLen=rc.Width()-20;&//&sb&height
-20&问题&你&可以&去掉&试试&。
“下面的滚动条向右移动”&不明白&?
&OnSize中cx,cy没有用到,这样对吗&
“不是一缩小就显示滚动条”
m_sbVertLen=rc.Height()-20;//&sb&width
m_sbHorzLen=rc.Width()-20;&//&sb&height
-20&问题&你&可以&去掉&试试&。
“下面的滚动条向右移动”&不明白&?
1,试了之后也不对,当窗口缩小后,还是没有立即显示滚到条,当缩小到一定范围后才显示滚动条。
2,水平或垂直滚动条滚到后,此时窗口的控件表示一部分,这时拖动窗口变大,窗口显示的不正确,显示多余的余白。
&水平或垂直滚动条滚到后&
你&已经&加了&滚动条&处理,&进度快了。&先&不要&&OnScroll&(你的处理&有问题)
InvalidateRect
The&InvalidateRect&function&adds&a&rectangle&to&the&specified&window's&update&region.&The&update&region&represents&the&portion&of&the&window's&client&area&that&must&be&redrawn.&
BOOL&InvalidateRect(
&&HWND&hWnd,&&//&handle&of&window&with&changed&update&region
&&CONST&RECT&*lpRect,
&&&&&&&&&&&&&&//&address&of&rectangle&coordinates
&&BOOL&bErase&//&erase-background&flag
Parameters
Handle&to&the&window&whose&update&region&has&changed.&If&this&parameter&is&NULL,&the&system&invalidates&and&redraws&all&windows,&and&sends&theWM_ERASEBKGND&and&WM_NCPAINT&messages&to&the&window&procedure&before&the&function&returns.&
Pointer&to&a&RECT&structure&that&contains&the&client&coordinates&of&the&rectangle&to&be&added&to&the&update&region.&If&this&parameter&is&NULL,&the&entire&client&area&is&added&to&the&update&region.&
Specifies&whether&the&background&within&the&update&region&is&to&be&erased&when&the&update&region&is&processed.&If&this&parameter&is&TRUE,&the&background&is&erased&when&the&BeginPaint&function&is&called.&If&this&parameter&is&FALSE,&the&background&remains&unchanged.&
Return&Values
If&the&function&succeeds,&the&return&value&is&nonzero.
If&the&function&fails,&the&return&value&is&zero.&
Windows&NT:&To&get&extended&error&information,&callGetLastError.
The&invalidated&areas&accumulate&in&the&update&region&until&the&region&is&processed&when&the&next&WM_PAINT&message&occurs&or&until&the&region&is&validated&by&using&the&ValidateRect&or&ValidateRgn&function.&
The&system&sends&a&WM_PAINT&message&to&a&window&whenever&its&update&region&is&not&empty&and&there&are&no&other&messages&in&the&application&queue&for&that&window.&
If&the&bErase&parameter&is&TRUE&for&any&part&of&the&update&region,&the&background&is&erased&in&the&entire&region,&not&just&in&the&given&part.&
Windows&CE:&The&hWnd&parameter&cannot&be&NULL.
&&Windows&NT:&Requires&version&3.1&or&later.
&&Windows:&Requires&Windows&95&or&later.
&&Windows&CE:&Requires&version&1.0&or&later.
&&Header:&Declared&in&winuser.h.
&&Import&Library:&Use&user32.lib.
Painting&and&Drawing&Overview,&Painting&and&Drawing&Functions,&BeginPaint,&InvalidateRgn,&RECT,&ValidateRect,&ValidateRgn,WM_ERASEBKGND,&WM_NCPAINT,&WM_PAINT&
这个&-20&是&滚动条&的&宽高,&
GetSystemMatrics(SM_CXVSCROLL)&和&SM_CYHSCROLL
好像&要&检查&是不是&2个&滚动条&&已经&有一个&显示&了。
GetScrollRange(SB_VERT&,&min,&Max)
max=0&没有&Vscroll&,&不用减&;
这个&-20&是&滚动条&的&宽高,&
GetSystemMatrics(SM_CXVSCROLL)&和&SM_CYHSCROLL
好像&要&检查&是不是&2个&滚动条&&已经&有一个&显示&了。
GetScrollRange(SB_VERT&,&min,&Max)
max=0&没有&Vscroll&,&不用减&;
1.小弟还是不是特别明白,-20是在哪里进行判断,在OnSize?还是在别的函数里进行判断,能说地详细一点吗?最好是有代码。
2.去掉OnScroll&函数的处理,窗口的缩小还是立即出现滚动条,好想跟-20太大关系。
3.我还想知道怎么通过窗口的大小去计算滚动条的长度(去掉标题栏的高度)。
&2.去掉OnScroll&函数的处理,窗口的缩小还是立即出现滚动条,好想跟-20太大关系。&
没有&-20&时
单&horz&缩放&,&会&出现&vert&滚动条,&仔细&看看&!
而&单&vert&缩放&,&会&出现&horz&滚动条。
因为一个&滚动条(如horz)的出现&,使&窗口&(vert)变小了。导致&另一个&滚动条&(vert)&出现。
这是&可以&解决的,
初始化里&&不减
m_sbVertLen=rc.Height();
m_sbHorzLen=rc.Width();
到&OnSize中&中&根据
GetSystemMatrics(SM_CXVSCROLL)&和&SM_CYHSCROLL
GetScrollRange(SB_VERT&,&min,&Max)
Max&是不是&》0&(滚动条&已显示)来&判断&要不要&减&20&(滚动条&已显示&-20,没显示&不减)
你&试试&吧。
void&onsize&中:
if(cx==0)&
int&vert=m_sbVertLen-
GetScrollRange(SB_HORZ,&min,&max);
if(max&0)&//&has&horz&bar
&&&&vert&-=&m_sbW//-20
SetScrollRange(SB_VERT,0,vert&0?&vert&:&0,&TRUE);
int&horz=m_sbHorztLen-
GetScrollRange(SB_VERT,&min,&max);
if(max&0)&//&has&vert&bar
&&&&horz&&-=&&m_sbH&//&-20
SetScrollRange(SB_HORZ,0,horz&&&0&?&&horz&&:&0,&TRUE);
初始化里&&不减
m_sbVertLen=rc.Height();
m_sbHorzLen=rc.Width();
这次&onsize&里&用了cx&cy
这次&onsize&里&用了cx&cy
画面上基本已经好用了啊,但是有点小问题和小疑问。
1.当画面从缩小的状态,往最大的窗口拖动的时,先让水平滚动条消失(水平方向长度最大),再让垂直方向的滚动条消失(垂直方向长度最大),这个时候有个小BUG原画面滚动位置背景色是白色的。
2.滚动条的事件应该怎么重写。
这次&onsize&里&用了cx&cy
拜托大哥了啊,&感激不尽。
晚上&给你&滚动&程序。
晚上&给你&滚动&程序。
实在是太感谢了啊&
&这个时候有个小BUG原画面滚动位置背景色是白色的。&
vc6&&上&没有问题。
&这个时候有个小BUG原画面滚动位置背景色是白色的。&
vc6&&上&没有问题。
这个问题我用&invalidate解决掉了,但是新的问题出现了,如果我水平或垂直稍微拖动一下窗口,窗口就一直在闪烁,好想是滚动条一直处于显示跟不显示之间切换,小弟不知道什么解决,还请大哥帮忙解决一下,感激不尽。
有的时候如果从小窗口拖动到最大的时候,边框会消失。
麻烦大哥您了。
闪烁&是&&invalidate&引起的
闪烁&是&&invalidate&引起的
我把invalidate&注释掉了,但是问题还是存在的,个人觉得跟invalidate&没有关系,还请指点一下。谢谢。
请&说明&你&工程&是&什么。
我做的是&对话框&工程&放&一排&按钮&在&top&。
vc6&下没有&你&说&的问题。
请&说明&你&工程&是&什么。
我做的是&对话框&工程&放&一排&按钮&在&top&。
vc6&下没有&你&说&的问题。
我做的也是对话框工程,但是是在VS2008以上的工程上做的,我在你的代码基础上追加了vert&》20和horz&》20的判断,闪烁的问题不存在了,但是当从最大窗口缩小20的时候,对话框边栏(非客户区)消失了还是存在的,还希望指点一些,谢谢。
等&把&滚动条代码&给&你&后&再说吧。
protected:
HICON&m_hI
int&m_sbVertL
int&m_sbHorzL
#define&SCROLL_STEP&5
void&CCheckCursorDlg::OnHScroll(UINT&nSBCode,&UINT&nPos,&CScrollBar*&pScrollBar)&
//&TODO:&Add&your&message&handler&code&here&and/or&call&default
SCROLLINFO&ScrollI
ScrollInfo.cbSize=sizeof(ScrollInfo);
ScrollInfo.fMask&=&SIF_ALL;
GetScrollInfo(SB_HORZ,&ScrollInfo);
int&delta=0;
switch(nSBCode)
case&SB_LEFT:
case&SB_LINELEFT:
if(ScrollInfo.nPos&&&&ScrollInfo.nMin)&delta&=&-SCROLL_STEP;
case&SB_RIGHT:
case&SB_LINERIGHT:
if(ScrollInfo.nPos&&&&ScrollInfo.nMax)&delta&=&SCROLL_STEP;
case&SB_THUMBTRACK:
case&SB_THUMBPOSITION:
&&&&&&&&delta&=&ScrollInfo.nTrackPos-ScrollInfo.nP
if(delta&!=0&)
{//&you&can&adjust&m_Offset&in&OnInitDialog()&for&&abc&&start&point
m_hbPos&+=&
ScrollWindow(delta,0);
UpdateWindow();
ScrollInfo.nPos&+=&
ScrollInfo.fMask=SIF_POS&|&SIF_RANGE;
SetScrollInfo(SB_HORZ,&ScrollInfo);
// CDialog::OnHScroll(nSBCode,&nPos,&pScrollBar);
void&CCheckCursorDlg::OnVScroll(UINT&nSBCode,&UINT&nPos,&CScrollBar*&pScrollBar)&
//&TODO:&Add&your&message&handler&code&here&and/or&call&default
SCROLLINFO&ScrollI
ScrollInfo.cbSize=sizeof(ScrollInfo);
ScrollInfo.fMask&=&SIF_ALL;
GetScrollInfo(SB_VERT,&ScrollInfo);
int&delta=0;
switch(nSBCode)
case&SB_TOP:
case&SB_LINEUP:
if(ScrollInfo.nPos&&&&ScrollInfo.nMin)&delta&=&-SCROLL_STEP;
case&SB_BOTTOM:
case&SB_LINEDOWN:
if(ScrollInfo.nPos&&&&ScrollInfo.nMax)&delta&=&SCROLL_STEP;
case&SB_THUMBTRACK:
case&SB_THUMBPOSITION:
&&&&&&&&delta&=&ScrollInfo.nTrackPos-ScrollInfo.nP
if(delta&!=0&)
{//&you&can&adjust&m_Offset&in&OnInitDialog()&for&&abc&&start&point
m_vbPos&+=&
ScrollWindow(0,delta);
UpdateWindow();
ScrollInfo.nPos&+=&
ScrollInfo.fMask=SIF_POS&|&SIF_RANGE;
SetScrollInfo(SB_VERT,&ScrollInfo);
// CDialog::OnVScroll(nSBCode,&nPos,&pScrollBar);
void&CCheckCursorDlg::OnSize(UINT&nType,&int&cx,&int&cy)&
CDialog::OnSize(nType,&cx,&cy);
//&TODO:&Add&your&message&handler&code&here
if(cx==0)&
int&vert=m_sbVertLen-
if(m_vbPos&&0)
{//&re-init
ScrollWindow(0,-m_vbPos);
SetScrollPos(SB_VERT,0);
m_vbPos=0;
UpdateWindow();
GetScrollRange(SB_HORZ,&min,&max);
if(max&0)&//&has&horz&bar
vert&-=&m_sbW
SetScrollRange(SB_VERT,0,vert&&&0&?&vert&:&0,&0);
SetScrollPos(SB_VERT,0,TRUE);
m_vbPos&=&0;
int&horz=m_sbHorzLen-
if(m_hbPos&&0)
{//&re-init
ScrollWindow(-m_hbPos,0);
SetScrollPos(SB_HORZ,0);
m_hbPos=0;
UpdateWindow();
GetScrollRange(SB_VERT,&min,&max);
if(max&0)&//&has&vert&bar
horz&&-=&&m_sbH
SetScrollRange(SB_HORZ,0,horz&&&0&?&horz&:&0,&0);
SetScrollPos(SB_HORZ,0,TRUE);
m_hbPos&=&0;
其中:OnSize(UINT&nType,&int&cx,&int&cy)&
的{//&re-init&是为了&方便设置&bar&的thumb&位置.
m_hIcon&=&AfxGetApp()-&LoadIcon(IDR_MAINFRAME);
m_hbPos=0;
m_vbPos=0;
OnInitDialog()
m_sbWidth=GetSystemMetrics(SM_CXVSCROLL);&//16
m_sbHeight=GetSystemMetrics(SM_CYHSCROLL);//16
GetClientRect(&rc);
m_sbVertLen=rc.Height();
m_sbHorzLen=rc.Width();&
SetScrollRange(SB_VERT,&0,&0);
SetScrollRange(SB_HORZ,&0,&0);
m_hIcon&=&AfxGetApp()-&LoadIcon(IDR_MAINFRAME);
m_hbPos=0;
m_vbPos=0;
OnInitDialog()
m_sbWidth=GetSystemMetrics(SM_CXVSCROLL);&//16
m_sbHeight=GetSystemMetrics(SM_CYHSCROLL);//16
GetClientRect(&rc);
m_sbVertLen=rc.Height();
m_sbHorzLen=rc.Width();&
SetScrollRange(SB_VERT,&0,&0);
SetScrollRange(SB_HORZ,&0,&0);
辛苦您了啊&&非常感谢,小弟会精心研究的。
滑动滚动条的效果不是我想要的,我想要的是当我缩小窗口的时候滚动条的大小也跟着变化(刚出现滚动条的时候比较长,一点点缩小后滚动条的长度变小),当滑动滚动条的时候显示未表示的部分。还请大哥指点一下&再次感激不尽。
“我想要的是当我缩小窗口的时候滚动条的大小也跟着变化”
窗口缩小&滚动条&当然&就短。
什么叫&“滑动滚动条的效果”&不&明白
“我想要的是当我缩小窗口的时候滚动条的大小也跟着变化”
窗口缩小&滚动条&当然&就短。
什么叫&“滑动滚动条的效果”&不&明白
1.不知道是我的工程问题还是别的问题,现在的确是滚动条的长度不跟着改变,代码还在理解中。
2.拖动滚动条后,显示的内容不是我想要的,例如,窗口处于小窗口的状态(窗口被缩小了),当我向右拖动水平滚动条后,显示的应该是右侧未表示的部分(画面上的客户区应该向左移动)。
2.&我知道了,&你&是&说&滚动方向反了&。
m_vsPos&+=&改成&-=
ScrollWindow(0,&delta&改成&-delta&。
m_hsPos&。。。
1&“现在的确是滚动条的长度不跟着改变”
使用的&是&对话框&自己的&滚动条,&不是&再拖进来的&控件。
在&对话框&属性中&打开&滚动条。
2.&我知道了,&你&是&说&滚动方向反了&。
m_vsPos&+=&改成&-=
ScrollWindow(0,&delta&改成&-delta&。
m_hsPos&。。。
小弟改过来了&好用了啊,太感谢。&呵呵。但是还是存在问题。
1.当我把水平滚动条移动到最右边的时候,会有余白,是我客户区的大小的过大的问题吗?
2.当我把水平滚动条移动到最右边的时候,再向右拖动窗口,这时候会有更多的余白显示,而不是将右边未显示的部分显示出来。
还请大哥指点一下,非常感谢。
1&“现在的确是滚动条的长度不跟着改变”
使用的&是&对话框&自己的&滚动条,&不是&再拖进来的&控件。
在&对话框&属性中&打开&滚动条。
我用的是对话框中的滚动条,现在不管怎么放缩窗口大小,滚动条的长度始终的长度始终不改变。好想让大哥指点一下,哪里设置的问题。非常感谢。
&放缩窗口&&你怎么&缩放&的&?
对话框&属性要有&&“resizing”
&放缩窗口&&你怎么&缩放&的&?
对话框&属性要有&&“resizing”
对话框是可拖拽的,就是光标放在边框的会后光标变成左右箭头或者斜着的箭头。关于我说的当我把水平滚动条移动到最右边的时候,再向右拖动窗口,这时候会有更多的余白显示的问题,好像就因为,当再次拖拽的时候滚动条直接到最左边了,没有在跟着画面变化而变化。而导致的等再次移动滚动条就会有多余的余白。
还请大哥帮忙指点一下。非常感谢。
http://blog.csdn.net/popppig/article/details/8218227
网上有很多
非常感谢回帖,但是你发的链接只是设置滚动条事件,不是我想要的效果,我想要的是我设置了一个窗口,假设高度500,宽度是1000,程序刚启动就显示这个大小,此时不显示滚动条,只要我把窗口变小就显示滚动条。
可以帮我解决一下吗
在OnSize方法里判断窗口的大小,然后调用ShowScrollBar来显示或者隐藏滚动条
“滚动条的长度始终的 长度始终不改变”
解决没有?
“再次拖拽(sizing)的时候滚动条直接到最左边了”
我把&thumb&复位了&即:
&&&&if(m_hbPos&&0)
&&&&{//&re-init
&&&&&&&&ScrollWindow(-m_hbPos,0);
&&&&&&&&SetScrollPos(SB_HORZ,0);
&&&&&&&&m_hbPos=0;
&&&&&&&&UpdateWindow();
&&&&if(m_hbPos&&0)
&&&&{//&re-init
&&&&&&&&ScrollWindow(-m_hbPos,0);
&&&&&&&&SetScrollPos(SB_HORZ,0);
&&&&&&&&m_hbPos=0;
&&&&&&&&UpdateWindow();
”滚动条直接到最左边了“
这是因为&再&sizing&时&,&thumb&位置&不容易计算。
”更多的余白显示的问题“&vc6&上&这个&问题&!!!
&vc6&上&没&&这个&问题&!!!
要不&上(sizing)的结果图&看看,
&vc6&上&没&&这个&问题&!!!
要不&上(sizing)的结果图&看看,
1.滚动条的长度问题没有解决,可能是我的描述有一些问题,让您产生了一些疑惑。我想要的效果是,当窗口稍微缩小一点滚动条出现假设长度是100(滑块的长度),当窗口继续缩小,滑块的长度变短假设变成50(滑块的长度),这样滑块可移动的范围比较大。就像现在这个网页拖动的时候滑块大小被改变一样。
2.余白问题,前提是我在OnGetMinMaxInfo()中设置窗口大小(IpMMI-》ptmaxtracksize.x和.y的大小),当窗口变小后,把水平滑块移动到最右边(客户区显示到最右边),这个时候去向右拖拽窗口,窗口变大,这个时候客户区的最右边显示多余&余白,我想要的效果是滑块的位置不变,向右拖拽窗口的时候,渐渐的将左边的客户区显示出来(相当于拖拽左边窗口,往左拖动)。操作跟当前网页出现水平滑块移动的效果是一样的。
还请大神帮忙指点一下,非常感谢。
“滚动条的长度”&是整个条的&长度。
滑块的长度&是&thumb&的&长度&
不是&一回事。
我的&例子&没有&考虑&滑块的长度&!
理论上&滑块的长度&是&当前&已&显示的&长度。
“2.余白问题,前提是我在OnGetMinMaxInfo()中设置窗口大小”
窗口大小&是&用户&sizing&的&结果,&你&怎么&可以&设置。&
你&只能&根据&用户设定,&改变&滚动条。
“滚动条的长度”&是整个条的&长度。
滑块的长度&是&thumb&的&长度&
不是&一回事。
我的&例子&没有&考虑&滑块的长度&!
理论上&滑块的长度&是&当前&已&显示的&长度。
“2.余白问题,前提是我在OnGetMinMaxInfo()中设置窗口大小”
窗口大小&是&用户&sizing&的&结果,&你&怎么&可以&设置。&
你&只能&根据&用户设定,&改变&滚动条。
1.滑块的长度问题,大哥可以给小弟解决一下吗?
2.余白的问题。因为要求窗口的大小是固定(不是最大化的大小,要小于最大化的大小),不能大于一定的大小,如果我想把窗口的大小固定了,拖动还没有余白,就像网页显示那样拖拽没有余白,可以结局吗?
如果积分太少了话,我可以另开一贴。小弟实在是解决不了了,还请大哥帮忙指点一下。
“滚动条的长度”&是整个条的&长度。
滑块的长度&是&thumb&的&长度&
不是&一回事。
我的&例子&没有&考虑&滑块的长度&!
理论上&滑块的长度&是&当前&已&显示的&长度。
“2.余白问题,前提是我在OnGetMinMaxInfo()中设置窗口大小”
窗口大小&是&用户&sizing&的&结果,&你&怎么&可以&设置。&
你&只能&根据&用户设定,&改变&滚动条。
或者是用其他的方法把窗口最大的size给固定住,这样当拖动至最大窗口的时候滚动条也是不显示。
看样子要&推倒&重搞&!
1.&&把&对话框的&类&信息&改为&window。
在&向导中&加&OnSizing&响应。
2.&&因为&要&用到&page&值,&所以&要&用&SetScrollInfo&了。
3.&初始化时&nPage&==&窗口&大小
&&&这样&thumb&就是&&最大了,&表示&&客户区&已经&全部&显示。
4.&在&OnSizing&中&重新&设置&page&,&这样&thumb&就&变了
只是&思路,&有&上面的&经验&,&你&自己&试试。
看样子要&推倒&重搞&!
1.&&把&对话框的&类&信息&改为&window。
在&向导中&加&OnSizing&响应。
2.&&因为&要&用到&page&值,&所以&要&用&SetScrollInfo&了。
3.&初始化时&nPage&==&窗口&大小
&&&这样&thumb&就是&&最大了,&表示&&客户区&已经&全部&显示。
4.&在&OnSizing&中&重新&设置&page&,&这样&thumb&就&变了
只是&思路,&有&上面的&经验&,&你&自己&试试。
非常感谢大哥的指点和给的思路,你上面的代码我理解了一番,大概都差不多了,就是在复位那块&不是特别明白,好像如果不复位的话应该不会出现余白的问题,等我再研究一番,还有可以给我点关于让滑块固定,和滑块大小跟窗口大小的公式的一些思路吗?在此小弟感谢不尽,一定会跟您虚心学习的,还望大哥指点一番。谢谢。
page&值&,&就是&滑块&的&大小。
原代码&在复位那块
1,&滚动&回去
2.&&&pos&=0
原代码&在复位那块
1,&滚动&回去
2.&&&pos&=0
在DEBUG的时候,if(m_hbPos&&0)始终没有走到这个里面,还想请教一下什么时候,能进到这个里面,谢谢。
&&if(m_hbPos&&0)
&表示&horz&bar&已滚动过&,&所以要滚动回去.&所以先滚动一下.菜鸟编写的mfc读取的程序,调试出错,求帮助!==
热门型号:
&&&当前位置:
菜鸟编写的mfc读取的程序,调试出错,求帮助!
用户名:jxlyyr3
注册时间: 14:36:00
菜鸟编写的mfc读取的程序,调试出错,求帮助!
各位大师好,我是刚学c++的,在高手的指导下,编写了一个mfc读取的程序,程序如下:LONG CSerialPortTestDlg::OnComm(WPARAM ch, LPARAM port){INT// UINT Hbyte,L//INT i=0;i++;if (i==1){Hbyte=}if (i==2){Lbyte=temp = Htemp = temp << 8; //高八位temp |= L //低八位CString hexCh;hexCh.Format(TEXT("%.2f "), ((temp*10.0/.0)*/5.0));m_strEditReceiveMsg = hexCh;i=0;}UpdateData(FALSE);CFfile.Open( "D:\\1.txt ",CFile::modeReadWrite);CString str = _T( " ");m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量file.Write(str,str.GetLength());file.Close();编译的时候没有错误,点击调试后,弹出错误:提示For information on how your program cause an assertion failure,See the visual c++ documation on asserts.File:filecore.cpp求高手指导Line:238
用户名:jxlyyr3
注册时间: 20:58:00
这是我根据别的高手的指点,找到了别人的程序,如下
&&file.Open( &D:\\1.txt &,cfile::modeReadWrite);&&
&&CString str = _T( & &);& &
&&m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量&&
&&file.Write(str,str.GetLength());&&
&&file.close();
UpdateData(FALSE);
& & & & CFile& &
& & file.Open( &D:\\1.txt &,cfile::modeReadWrite);
& & CString& && & str& &&&=& &_T( & &);& && &
& & m_strEditReceiveMsg.GetWindowText(str);//编辑框控件的control的绑定变量
& & file.Write(str,str.GetLength());
& & file.close();
引用之后出现了以下错误,
error C2653: 'cfile' : is not a class or namespace name
error C2065: 'modeReadWrite' : undeclared identifier
error C2065: 'm_Edit' : undeclared identifier
error C2228: left of '.GetWindowTextA' must have class/struct/union type
error C2039: 'close' : is not a member of 'CStdioFile'
请高手们再帮我改改吧,谢谢了!
我的编辑框的ID是IDC_EDIT_RECEIVEMESSAGE,谢谢指点了!
用户名:zhoujiewen
注册时间: 12:53:00
你可以把源程序给我看看。
用户名:airwill
注册时间: 13:00:00
问题出在 cfile 上面, 怎么定义的呢?
用户名:jxlyyr3
注册时间: 14:10:00
谢谢您了,我问题已经解决了。原因是,我没有在d盘建立相应的文本。现在可以显示,也可以保存了。下面是部分程序
hexCh.Format(TEXT(&%.2f &), ((temp*10.0/.0)*/5.0));
& && &&&m_strEditReceiveMsg = hexCh;
UpdateData(FALSE);
& & file.Open( &D:\\1.txt &,CFile::modeReadWrite);
& & //CString& && & str& &&&=& &_T( & &);& && &
& & //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
& & m_Edit.GetWindowText(m_strEditReceiveMsg);
& & file.Write(m_strEditReceiveMsg,m_strEditReceiveMsg.GetLength());
& & file.Close();
显示程序就是你指点的那样,我现在只是把+=换成了=号。因此可以只显示一个数据了。我现在最关心的问题是能否让这个程序保存每次显示的那个数据。我做完实验时候,在向你请教。谢谢了! 3# zhoujiewen
用户名:jxlyyr3
注册时间: 14:12:00
不用定义,我是大小写搞错了。
4# airwill
用户名:jxlyyr3
注册时间: 16:26:00
我的程序已经可以了。我想再问你一下。我的硬件是用两个ad1674采取两个通道的模拟信号,我现在想通过一个器件,仅使用一个ad1674就可以轮流读取两个通道的模拟信号,请问一下什么器件可以让ad1674轮流读取信号啊?谢谢了!
3# zhoujiewen
用户名:zhoujiewen
注册时间: 14:11:00
你可以使用模拟开关,你AD模拟输入是-5~5V吧,可以用8选1通道的模拟开关CD4051.
用户名:jxlyyr3
注册时间: 20:49:00
谢谢您的指导了!师兄让我现在先把两个芯片轮流工作的程序编好。现在先不考虑模拟开关的问题了。接下来还有很多向你请教的!您多多指点哈!谢谢了!
8# zhoujiewen
用户名:jxlyyr3
注册时间: 8:47:00
3# zhoujiewen
用户名:jxlyyr3
注册时间: 8:47:00
您好,非常感谢之前您对我的指点!现在我还想请教你一个问题。我设计了两个编辑框,分别通过一个按钮,使他们保存数据。程序如下:
void CSerialPortTestDlg::OnButtonSave()
& && &&&CFile& &
& && &&&file.Open( &D:\\电压.txt &,CFile::modeReadWrite);
& && & //CString& && & str& &&&=& &_T( & &);& && &
& && & //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
& && & //m_Edit.GetWindowText(m_strEditReceiveMsg);
& && &&&file.Write(m_Editsave,m_Editsave.GetLength());
& && &&&file.Close();
// TODO: Add your control notification handler code here
void CSerialPortTestDlg::OnButtonSavepow()
m_ctrlSave.SetWindowText(&暂停保存&);
& && &&&CFile& &file1;
& && &&&file1.Open( &D:\\力矩.txt &,CFile::modeReadWrite);
& && & //CString& && & str& &&&=& &_T( & &);& && &
& && & //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
& && & //m_Edit.GetWindowText(m_strEditReceiveMsg);
& && &&&file1.Write(m_Powersave,m_Powersave.GetLength());
& && &&&file1.Close();
// TODO: Add your control notification handler code here
可是调式之后,只有第一个txt里面保存了数据,第二个没有任何数据。请您指点我一下是什么问题啊?谢谢了! 3# zhoujiewen
用户名:liuzhengwu4
注册时间: 9:53:00
你的OPEN方式要求下次写前定位文件中已写的位置。。。用seektoend....
用户名:jxlyyr3
注册时间: 11:24:00
非常感谢您的指点。在各位高手的帮助下,我的程序已经可以显示并且保存数据了。但是现在我希望可以对保存数据的txt文件清空。麻烦您指点我一下,谢谢了!
12# liuzhengwu4
热门型号:

我要回帖

更多关于 求一个apple id账号 的文章

 

随机推荐