【转】WM5.0中输入法跳出窗体调整加滚动条(VC++) 

vc滚动条 WM_VSCROLL消息16位屏障问题 最近做了一个文本处理程序,用edit控件显示文本类容,由于是比较性的两个edit,需要一个滚动条同事控制两个edit控件滚动时间,WM_VSCROLL消息当edit行数超过65535时失效; 解决方法:void LineScroll( int nLines, int nChars = 0 ); 利用 EM_LINESCROLL 信息控制 TextBox 的卷动。 在含有卷动轴的 阅读详情

原文:http://115610536.blog.163.com/blog/static/1912805920091241858948/

 

准备工作:加个基于对话框的MFC智能设备的项目,随便加入几个Edit控件和BUTTON控件(是为了显示滚动的效果,同时Edit控件还可以调入输入法)

开始工作:在窗口的消息中找到WM_VSCROLL消息,该消息将用于竖直滚动条。

先在窗口初始化函数OnInitDialog()中加入:

int ypos = GetScrollPos(SB_VERT);
 if (ypos !=0)
 ScrollWindow(0,ypos); //恢复窗口的垂直滚动区域
  
 SCROLLINFO vinfo; 
 vinfo.cbSize = sizeof(vinfo);
 vinfo.fMask = SIF_ALL;
 vinfo.nPage = 80;
 vinfo.nMax= 300;
 vinfo.nMin = 0;
 vinfo.nTrackPos = 0;
 vinfo.nPos = 0; 
 //设置垂直滚动条信息
 SetScrollInfo(SB_VERT,&vinfo);

对竖直滚动条进行初始化,然后就是在系统给定的消息函数OnVScroll中加入代码了:

void CScrollDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
 CRect rc;
 GetWindowRect(&rc);
 SCROLLINFO si = {sizeof(SCROLLINFO),SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS, 0, 0, 0, 0,0};
  
 

 ::GetScrollInfo (m_hWnd, SB_VERT, &si);
 int MIN_VSCROLL_VALUE  = 0;
 int  MAX_VSCROLL_VALUE = si.nMax;

 int iInterval = 0;
 int Pos = si.nPos;
 switch (nSBCode)
 {
 case SB_LINEUP:
  Pos -= 20;
  break;
 case SB_PAGEUP:
  Pos -= 60;
  break;
 case SB_LINEDOWN:
  Pos += 20;
  break;
 case SB_PAGEDOWN:
  Pos += 60;
  break;
 case SB_TOP:
  Pos = MIN_VSCROLL_VALUE;
  break;
 case SB_BOTTOM:
  Pos = MAX_VSCROLL_VALUE;
  break;
 case SB_THUMBTRACK:
 case SB_THUMBPOSITION:
  Pos = si.nTrackPos;
  break;
 }
 if(Pos < MIN_VSCROLL_VALUE)
  Pos = MIN_VSCROLL_VALUE;
 else if(Pos >=(MAX_VSCROLL_VALUE-si.nPage))
 Pos = MAX_VSCROLL_VALUE  -  si.nPage;
 iInterval = Pos - si.nPos;
 if(0 != iInterval)
 {
  si.fMask = SIF_POS;
  si.nPos = Pos;
 
  ::SetScrollInfo (m_hWnd, SB_VERT, &si, TRUE);
  ScrollWindowEx(0, -iInterval, NULL, NULL,
   NULL, NULL, SW_SCROLLCHILDREN);
 }


 //Invalidate();//该重绘对话框的语句好像注释掉也没关系,还可以让对话框滚动
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

让滚动条显示用ShowScrollBar(SB_VERT,TRUE);

隐藏用ShowScrollBar(SB_VERT,FALSE);

调用输入法键盘需引入SIPAPI.h文件

SipShowIM(SIPF_ON);显示输入法软键盘

SipShowIM(SIPF_OFF);隐藏输入法软键盘

当一个Edit控件触发EN_SETFACUS事件时,可以设置显示输入法

当触发EN_KILLFACUS事件时,可以隐藏输入法

MFC 滑动滚条实现与应用教程 本文还有配套的精品资源,点击获取 简介:MFC是一个用于构建Windows应用程序的C++类库,简化了Win32 API程序的开发过程。滑动滚条是GUI中用于浏览大量数据或图像的常见组件。本文将指导如何在MFC中实现滑动滚条功能,涵盖初始化滚条、设置属性、处理消息、更新视图、反馈滚动事件以及自定义滚条外观等方面。通过分析文件"***"中的代码示例,读者将掌握滑动滚条的实际应... 阅读详情

相关推荐

千兆以太网PHY设计:PCB原理图完整示例

深入解析千兆以太网PHY电路设计要点,提供完整的PCB原理图设计实例,帮助工程师掌握高速信号布局与电源去耦等关键技术,提升设计稳定性与信号完整性。

weixin_30633869的博客 628

VC++之Scroll控件

Scroll Bar一般不会单独使用,因为SpinCtrl可以取代滚动条的一部分作用,但是如果你需要自己生成派生窗口,滚动条还是会派上一些用场。创建一个滚动条可以使用成员函数: : BOOL CEdit::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );

andyzx的开发日记 1465

DNN加速器脉动阵列轻量级瞬时故障检测

本文系统综述了面向深度神经网络(DNN)脉动阵列加速器的轻量级瞬时故障检测技术。通过分析比较算法级校验(ABFT)、数值异常监测(剪裁、中值滤波等)、硬件编码检错(AN码、剩余码)以及选择性冗余等方案,指出这些方法能以5%-10%的开销实现对权重和激活比特翻转的高效检测,远低于传统ECC/冗余计算的成本。研究显示,结合多种轻量技术可构建多层防护体系,在保障推理可靠性的同时保持加速器的高性能特性。该成果为安全关键领域的DNN加速器设计提供了重要参考。

欢迎交流! 1073

滚动条消息(WM_VSCROLL和WM_HSCROLL)

(1)当用户单击滚动条或者是拖动滑块时,Windows会向窗口过程发送WM_VSCROLL消息(垂直滚动时)或者是WM_HSCROLL消息(水平滚动时)。在滚动条上的任何鼠标动作会产生两条消息:一条是在鼠标键按下时,另一条是在鼠标键松开时。 (2)和其他的消息一样,WM_VSC

zmq5411的专栏 1万+

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 567

开关电源环路稳定性分析(01)-Buck变换器

这篇文章主要是根据Buck变换器的拓扑结构,利用欧姆定律,基尔霍夫定律,积分微分,这些我们所熟悉的理论推导出了开关电源输入和输出关系的表达式,我相信看完这篇文章,应该是可以自己推导一次。在后面的文章中,我们同样会按照这样的风格,尽量使用大家都已经掌握的知识,来一步一步的拆解晦涩难懂的环路稳定性的问题,在前面先把积木搭起来,后面综合分析的时候就不会显得那么困难!

D_Katter的博客 3830

vc 发 WM_VSCROLL消息

::SendMessage( m_pImageWall->m_hWnd, WM_VSCROLL, MAKEWPARAM(SB_LINEDOWN, 20), NULL);

chinabinlang的专栏 2020

自主探索型AI Agent:LLM驱动的好奇心与学习动机

随着人工智能技术的飞速发展,传统的AI系统往往依赖于预设的规则和大量的标注数据,其自主学习和适应新环境的能力有限。自主探索型AI Agent旨在打破这种局限,能够在复杂、未知的环境中自主地进行探索、学习和决策。本文的目的是深入研究在大语言模型(LLM)驱动下,AI Agent如何产生好奇心和学习动机,以及如何实现自主探索的能力。范围涵盖了核心概念、算法原理、数学模型、项目实战、应用场景等多个方面,为读者提供一个全面的技术视角。本文将按照以下结构进行阐述:首先介绍相关背景知识,包括目的、读者和文档结构;

大模型应用工坊 997

WM5.0中输入法跳出窗体调整加滚动条(VC++)

准备工作:加个基于对话框的MFC智能设备的项目,随便加入几个Edit控件和BUTTON控件(是为了显示滚动的效果,同时Edit控件还可以调入输入法)开始工作:在窗口的消息中找到WM_VSCROLL消息,该消息将用于竖直滚动条。先在窗口初始化函数OnInitDialog()中加入:int ypos = GetScrollPos(SB_VERT); if (ypos !=0) Scroll

napolun007的专栏 751

SmartFusion从FPGA到ARM系列教程

前言 本系列教程,将会以Microsemi SmartFusion一代芯片A2F200M3F为例,简单介绍片上ARM Cortex-M3 硬核 MCU 基本外设的使用,及其与FPGA逻辑模块进行交互的示例。 在学习片上硬核ARM Cortex-M3 MCU的开发之前,要先熟悉Microsemi Libero SoC开发环境的使用,可以参考:Microsemi Libero SoC系列教程 关于Microsemi SmartFusion混合型FPGA的介绍,可以参考:Microsemi SmartFusio.

whik1194的博客 8290

这才是 Python 的正确玩法!用强化学习 (RL) 训练 AI 玩《王者荣耀》,胜率 90%!

大家打排位时,一定遇到过那种“意识神级、操作零失误”的对手,或者“走位呆滞、送人头”的队友。以前的“人机”是程序员写死的脚本(If 血量<20% Then 回城)。而现在的顶级 AI(如腾讯绝悟、OpenAI Five),是靠强化学习 (Reinforcement Learning)自己“左右互搏”练出来的。今天,我们不谈枯燥的数学公式,我将手把手教你用,搭建一个能玩 MOBA 游戏的 AI Agent。即使不能去 KPL 打职业,虐一下钻石局还是绰绰有余的!

BUG猿的博客 1182

=WM_VSCROLL(消息反射) 和 WM_VSCROLL(消息响应)的区别

=WM_VSCROLL(消息反射) 和 WM_VSCROLL(消息响应)的区别 所谓消息反射就是控件拥有者自己不处这个理消息,而是反射给控件对象本身来处理这个消息 1、“=WM_VSCROLL”是消息反射标志  , WM_VSCROLL是 消息响应的标志,在VC6.0的ClassWizard中注意会发现这两个不同的消息,VS2010中没有“=WM_VSCROLL”,但是

梦想博客 3905

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2445

WM_VSCROLL // WM_HSCROLL

SysMets3.c  /*---------------------------------------------------- SYSMETS3.C -- System Metrics Display Program No. 3 (c) Charles Petzold, 1998 ---------------------------------

xzm_cn 1301

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WM_VSCROLL

关键点 控制滚动条在最下面 实现过程 SendMessage(form1.Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0); 图 备注 相关链接 ...

weixin_30627341的博客 389

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WM_VSCROLL/WM_HSCROLL

WM_VSCROLL nScrollCode = (int) LOWORD(wParam); // scroll bar value nPos = (short int) HIWORD(wParam);  // scroll box position hwndScrollBar = (HWND) lParam;      // handle to scroll bar 告诉我们用户对滚

jhb92的专栏 3096

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Vue的一些坑:页面切换后滚动条就消失了

原因是页面也换后body的overflow设置为hidden 在路由这里设置一下就可以咯 router.afterEach((to, from, next) => { document.querySelector("body").setAttribute("style", "overflow: auto !important;") });

进击的sheep的博客 3855

scrollTop()解决IOS中输入法遮挡输入框

经过测试,发现有的IOS浏览器上输入法会弹出遮挡输入框,网上很多都是介绍用以下方法 (function() { $(‘input’).on(‘click’, function () { var target = this; // 使用定时器是为了让输入框上滑时更加自然 setTimeout(function()

背包里的护身符的博客 1339

解决页面滚动条出现和消失的过程页面会横向移动的问题

平时我们看一些网页刚开始加载的时候没有多少内容,页面也没有出现纵向滚动条,当我们点击加载更多,页面内容高度超过一屏于是出现滚动条,这个时候,页面会向左横向移动一段距离,正好是滚动条的宽度,这是因为滚动条的出现占据了原本属于内容显示区的空间,自然内容就会被挤到左边去,毕竟这是一个很不好的体验,那么有什么好的解决方案呢? 这里我们可以借助css3 的语法: calc(): 用于计算,IE9+浏览器

子非鱼 7275

VC编程小技巧之滚动条

1.设置滚动条的滚动大小创建一个基于CScrollview的SDI Project(在第6步中选CScrollview) 若你已创建了,这步能省略。 然后: 改为如 void CTestView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal; // TODO: calculate the total s

lei35151的专栏 1193
上一篇: 【转】VC++实现GPS全球定位系统定位数据的提取
下一篇: 【转】函数PlaySound和sndPlaySound的用法
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值