关于在对话框中增加状态栏的问题。

mazee 2001-07-25 09:44:49
我在对话框中增加了一个状态栏,但是在创建后总是要我重载CStatusBarCtrl::DrawItem函数,我不知道该如何重载它,我的代码大概如下
class CMyDlg : public CDialog
{
// Construction
public:
CMyDlg(CWnd* pParent = NULL); // standard constructor
CStatusBarCtrl m_StatBar;

...................................
......................................
}

// Microsoft Developer Studio generated include file.
#define IDM_ABOUTBOX 0x0010
#define IDC_STATUSBAR 32500
.....................................
...................................
......................................


在CMyDlg::OnInitDialog() 中增加如下代码
int nTotWide; // total width of status bar

CRect rect;
this->GetWindowRect(&rect);
rect.top = rect.bottom- 25;
m_bRvStatOk = m_StatBar.Create(WS_CHILD | WS_BORDER | WS_VISIBLE ,rect,this,
IDC_STATUSBAR);

if (m_bRvStatOk == NULL)
{
AfxMessageBox ("Status Bar not created!", NULL, MB_OK );
}

CRect rWin;
this->GetWindowRect(&rWin);
nTotWide = rWin.right-rWin.left;

m_Widths[0] = nTotWide / 4;
m_Widths[1] = nTotWide / 2;
m_Widths[2] = nTotWide - m_Widths[0];
m_Widths[3] = -1;

m_StatBar.SetMinHeight(25);
m_StatBar.SetParts( 4, m_Widths);


m_StatBar.SetText("WITH BORDER.", 0,0);
m_StatBar.SetText("WITHOUT BORDER.",1,SBT_NOBORDERS);
m_StatBar.SetText("POPUP.",2,SBT_POPOUT);

m_StatBar.SetText(NULL,3, SBT_OWNERDRAW);

hBmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));

并重载下面函数
void CMyDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{

//
// Draw bitmap in status bar
//

HDC hdcMem; // device context for memory
HGDIOBJ hbmOld; // old bitmap area we're over-writing
BITMAP bm; // bitmap we're using

//
// Create a compatible DC in memory
//

hdcMem = CreateCompatibleDC(lpDrawItemStruct->hDC);
// Select the "logo.bmp" bitmap into the DC.
hbmOld = ::SelectObject(hdcMem, hBmp);
// Get the size of the bitmap
::GetObject(hBmp, sizeof(bm), &bm);
// Blt the bitmap to the part.

BitBlt(lpDrawItemStruct->hDC,lpDrawItemStruct->rcItem.left,
lpDrawItemStruct->rcItem.top, bm.bmWidth, bm.bmHeight,
hdcMem, 0, 0,SRCCOPY);


//
// Add some text..1st. get bounding rectangle, then position & display text
//

char szText[16];
RECT rText; // text rectangle
rText.left = lpDrawItemStruct->rcItem.left+24;
rText.top = lpDrawItemStruct->rcItem.top;
rText.right = lpDrawItemStruct->rcItem.right-20;
rText.bottom = lpDrawItemStruct->rcItem.bottom;

//
// add some text after the logo bitmap here
//

memset(szText,0,sizeof(szText));
strcpy(szText,"LOGO"); // text to draw

SelectObject( lpDrawItemStruct->hDC, GetStockObject( ANSI_VAR_FONT ) );
::SetBkColor(lpDrawItemStruct->hDC, 0x00c0c0c0); // set background color
ExtTextOut(lpDrawItemStruct->hDC, lpDrawItemStruct->rcItem.left+24, lpDrawItemStruct->rcItem.top+4, ETO_OPAQUE, &rText, szText,
strlen(szText),NULL ); // draw the text in the rectangle rText

//
// End adding text. Reselect the original object into the DC.
//

SelectObject(hdcMem, hbmOld);
// Delete the compatible DC.
DeleteDC(hdcMem);
}
编译完全通过,不过执行时到

void CStatusBarCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
ASSERT(FALSE); // must override for self draw status bars
}
时出错,提示需要我重载该函数。
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahphone 2001-07-25
  • 打赏
  • 举报
回复
http://www.codeguru.com/dialog/toolbars.shtml
ahphone 2001-07-25
  • 打赏
  • 举报
回复
太长,没看明白,请你先去这个地方看看,我不想贴代码:
http://www.codeguru.com/dialog/GirishStatusBar.shtml
mazee 2001-07-25
  • 打赏
  • 举报
回复
为什么没有人答复呢?
专业CT胰腺癌分割数据集 本数据集包含1600例高质量腹部增强CT影像,覆盖门静脉期与动脉期关键期相,包含多样化的胰腺解剖变异、肿瘤位置(胰头、胰体、胰尾)及分期(可切除、临界可切除、局部晚期)。所有影像均经由顶尖医学心的胰腺外科与影像科专家团队进行联合双盲审核与体素级精细标注,确保胰腺实质与肿瘤区域的分割达到手术级精度,可作为胰腺癌诊断、可切除性评估及新辅助疗效评价的可靠标准。 数据集已进行前沿的预处理流程,包括多期相非线性配准、各向同性体素重采样(1.0×1.0×1.0 mm³)、模态特定的强度标准化,并严格按8:2比例划分为训练集与验证集。数据以NIfTI格式存储,配套标注明确区分以下三类目标: • 0: 背景(包括所有非胰腺腹部器官、组织及空腔) • 1: 胰腺实质 • 2: 胰腺癌病灶 本数据集专为训练最先进的医学影像分割模型(如nnUNet、TransUNet)而优化,可用于开发高精度、高鲁棒性的胰腺及胰腺癌自动分割系统,为肿瘤的精准定位、体积测量、影像组学分析及手术规划提供关键基础。 随附的专业分析工具包,支持一键生成肿瘤三维形态学与纹理特征提取、多期相增强模式量化分析、胰腺与病灶体积比计算,并提供交互式三维可视化对比工具,全面支撑影像组学研究与模型可解释性分析。 该数据集具有规模大、标注精准、多期相、临床意义明确的突出优势,是开展胰腺癌影像人工智能、计算机辅助诊断、预后预测及治疗反应评估研究的黄金标准数据集。基于本数据集训练的模型,有望实现胰腺及癌灶的亚毫米级精准分割。 在人工智能赋能精准胰腺外科与肿瘤学的关键领域,高质量、专家级、病灶特异性的标注数据是推动相关AI工具迈向临床决策的核心。我们隆重推出这套经多学科顶尖专家严格质控的CT胰腺癌分割数据集,致力于为全球研究者提供可靠、可验证、可直接驱动临床转化的高性能研究基础。
源码链接: https://pan.quark.cn/s/22f532ed24ae ### MySQL 密码变更指南#### 一、引言在数据库维护的日常实践,周期性更新数据库名称的访问密钥是一项关键的安全实践。MySQL平台提供了多样的途径来调整密码,涵盖了在Windows与Linux操作系统环境下的具体实施方法。本说明将详尽阐述如何在两种系统配置更改MySQL的登录凭证。#### 二、在Windows平台调整MySQL密码在Windows环境下修正MySQL密码主要涉及两个核心环节:接入MySQL服务器及运用指令修改密码。**阶段1:接入MySQL**1. 启动命令行界面(cmd)。2. 定位至MySQL的安装路径下的`bin`子目录。通常路径为`C:\Program Files\MySQL\MySQL Server xx\bin`,其`xx`代表MySQL服务器的特定版本标识。3. 运用以下指令连接至MySQL服务器: ```bash mysql -u root -p ``` 在提示时输入MySQL管理员(root)的当前密钥后按回车键即可成功接入。**阶段2:调整密码**1. 成功接入后,执行以下指令来变更密码: ```sql SET PASSWORD FOR root@localhost = PASSWORD(新密钥); ``` 其`新密钥`替换为你计划设定的新访问密钥。2. 若调整操作成功,MySQL将反馈确认信息,表明密码已成功更新。#### 三、在Linux平台调整MySQL密码相较于Windows系统,在Linux环境下修正MySQL密码的过程稍显复杂,需要首先终止MySQL服务的运行,然后启动一个临时的服务实例,最终才能执行密码的调...
内容概要:本文围绕“考虑储能和可再生能源消纳责任制的售电公司购售电策略”展开研究,提出了一种基于遗传算法的优化模型,用于帮助售电公司在多重约束条件下制定最优购售电决策。该模型综合考虑了储能系统的运行特性、可再生能源的波动性以及国家政策规定的可再生能源消纳责任权重,构建了一个多目标、多时段的优化框架。通过Python编程实现遗传算法求解,有效平衡了成本最小化与绿色指标达标之间的关系,提升了售电公司在复杂电力市场环境下的运营效益与合规能力。文还提供了完整的代码实现与案例仿真,验证了模型的有效性与实用性。; 适合人群:具备一定电力系统基础知识和Python编程能力,从事能源管理、电力市场分析或智能优化算法研究的科研人员及工程技术人员,尤其适合研究生及以上层次的学习者。; 使用场景及目标:①应用于电力市场化背景下售电公司的经营策略制定;②支持含储能与可再生能源接入的电力系统优化调度研究;③为遗传算法在能源领域的实际应用提供实践范例。; 阅读建议:建议读者结合代码与理论模型同步学习,重点关注目标函数设计、约束条件建模及遗传算法参数设置部分,宜自行调整场景参数进行仿真测试,以深入掌握模型的适应性与优化机制。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧