1.新建一个空项目,设置属性:MFC 的使用:在静态库中使用 MFC、字符集:使用 Unic http:// ode 字符集和普通工作集:Windows XP。
2.新建一个头文件和原文件。
**********************************************图片分割线************************************************
#include <afxwin.h>
#include "demo.h"
**********************************************图片分割线************************************************
class CMyWinApp : public CWinApp
{
};
class CMyFrameWnd : public CFrameWnd
{
};
**********************************************图片分割线************************************************
**********************************************图片分割线************************************************
this->m_pMainWnd = new CMyFrameWnd;
this->m_pMainWnd->ShowWindow(this->m_nCmdShow);
this->m_pMainWnd->UpdateWindow();
return 0;
**********************************************图片分割线************************************************
public:
CMyFrameWnd();**********************************************图片分割线************************************************
this->Create(NULL, TEXT("Demo"), WS_OVERLAPPEDWINDOW);CMyWinApp app;在demo.cpp中InitInstance函数返回值改return TRUE;编译,运行。**********************************************图片分割线************************************************
**********************************************图片分割线************************************************
#define MAXLINE 100
#define LINESIZE 15//这里图中是错误的,没有;
**********************************************图片分割线************************************************
for (int i=0; i < MAXLINE; ++i)
{
dc.TextOut(0, i*LINESIZE, TEXT("Hello"),5);
}
**********************************************图片分割线************************************************
TCHAR szBuffer[1024];
for (int i=0; i < MAXLINE; ++i)
{
_sntprintf(szBuffer, 1024,TEXT("Hello %d"), i);//这里图中是错误的,应该是,不是.
dc.TextOut(0, i*LINESIZE, szBuffer, lstrlen(szBuffer));<pre name="code" class="cpp">//这里图中是错误的,少了)和出现这个警告_CRT_SECURE_NO_WARNINGS(解决办法:<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">右击工程 -- 属性 -- 配置属性 -- C/C++ -- 命令行--<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">命令行增加 /D _CRT_SECURE_NO_WARNINGS</span></span>)}
**********************************************图片分割线************************************************
表达式还是从零开始的,所以要+1。
**********************************************图片分割线************************************************
protected:
int m_nVScrollPos;//滚动条不回去。
int m_nViewHeight;//所有要显式数据的高度。
int m_nVPageSize;//即窗口中显示部分,看的见的部分。
**********************************************图片分割线************************************************
**********************************************图片分割线************************************************
m_nViewHeight = LINESIZE * MAXLINE;
m_nVScrollPos = 0;**********************************************图片分割线************************************************
每当窗口发生改变。
**********************************************图片分割线************************************************
int nVScrollMax =0;
m_nVPageSize = 0;//cy表示窗口改变以后的高度,cx表示窗口改变以后的宽度。
if (cy < m_nViewHeight)
{
nVScrollMax = m_nViewHeight - 1;
m_nVPageSize = cy;
//取一个最小值
m_nVScrollPos = min(m_nVScrollPos, m_nViewHeight - m_nVPageSize - 1);
}
SCROLLINFO si;
si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS;//没有标志下面的就不起作用。
si.nMin = 0;
si.nMax = nVScrollMax;
si.nPos = m_nVScrollPos;
si.nPage = m_nVPageSize;
this->SetScrollInfo(SB_VERT, &si, TRUE);
**********************************************图片分割线************************************************
int nDelta = 0;
switch (nSBCode)
{
case SB_LINEUP://拉一下向上走一行。
nDelta = -LINESIZE;
break;
case SB_PAGEUP:
nDelta = -m_nVPageSize;//第二步
break;
case SB_THUMBTRACK:
nDelta = (int)nPos - m_nVScrollPos;//第三步
break;
case SB_PAGEDOWN:
nDelta = m_nVPageSize;//第二步
break;
case SB_LINEDOWN:
nDelta = LINESIZE;
break;
default:
return;
}
if (nDelta != 0)
{
m_nVScrollPos = m_nVScrollPos+nDelta;
SetScrollPos(SB_VERT, m_nVScrollPos, TRUE);
ScrollWindow(0, -nDelta);//第四步
}
**********************************************图片分割线************************************************
dc.SetWindowOrg(0, m_nVScrollPos);
这篇博客介绍了如何在VS2013中使用MFC进行Windows程序设计,特别是关于窗口滚动条的实现。首先,创建一个空项目,设置属性为在静态库中使用MFC,并选择Unicode字符集。接着,博主通过添加头文件和源文件来逐步构建程序。内容中包含多个图片分割线,暗示文章可能包含了详细的步骤截图。
4327

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



