编程经验_Visual C++ 6.0_启动程序时伴随主窗口弹出程序说明窗口(2)
来源:互联网 发布:从手机淘宝上怎么退货 编辑:程序博客网 时间:2024/05/21 03:28
程序启动的时候弹出两个窗口,窗口的位置不太对,怎么设置?
可以用GetWindowRect()得到窗口(控件也是窗口)的大小和位置,用SetWindowPos()设置窗口的大小位置。只用后者就够了,在CAGADlg类的OnInitDlg()中:
this->SetWindowPos(NULL, 100, 100, 0, 0, SWP_NOSIZE);
cad->SetWindowPos(NULL, 100, 100, 0, 0, SWP_NOSIZE);
第一个参数很有用,可以设置窗口的Z order。我想通过这个参数的设置实现主程序窗口盖在说明窗口上,但是没成功。最后只好实现在主窗口上点一下鼠标左键让说明窗口消失。
第二、三个参数是位置坐标。
第四、五个参数是大小,第六个参数SWP_NOSIZE的意思是废掉第四、五个参数,使用VC资源编辑器中的窗口大小。因为我发现这里设置了窗口大小后,窗口中的控件大小没有相应地改变,只设置了对话框一个窗口的大小,对其中的控件窗口没有影响。
下一步,给程序说明窗口加上说明信息。
增加一个Edit控件,属性设置为只读和自动垂直滚动条。用ClassWizard关联一个CString类型的变量m_sProgramInfo。发现在CAboutDlg构造函数中自动生成了代码:
CString m_sProgramInfo = _T("");
这个_T("...")是什么意思?查MSDN。这是Microsoft为了便于编程的国际化而提供一种mapping,用#define定义一种字符集,_T()能自动将其中的内容按照这种字符集来编码,当程序要移植到使用另一种字符集的环境中时,只需要修改#define就可以了。
OK,我往_T("")里面填程序说明,就像在记事本里面写文章一样···两个问题:
(1)在IDE中直接换行导致编译错误:error C2001: newline in constant
如果一行太长了写不下,应该用 /(回车字符) 表示换行继续写。这句话以前看到过,但是一直没注意。因为函数参数太长的时候,在逗号前面或后面直接输入回车换一行就行了。函数参数之间插入分隔符会被忽略掉,但是输入字符串常量时插入空格会显示出来,插入换行符会报错,太长了要换一行继续输入,必须用到 /(回车字符) 。
注意,用 / 后要顶行首写,不然会把空格和制表符都写到CString里面去。
用 /(回车) 甚至可以把一个函数名从中间劈开写在两行里面。 /(回车字符) 大概就是一个给编译器看的预编译符号,编译器看到 / 就把下一行和上一行合并。注意是 /(回车字符),在 / 后面插入一个空格也会编译报错。
(2)怎么在Edit控件中显示换行效果
一开始我是想直接输入换行符,显示出换行符,结果编译报错
然后我加/n来换行,就像printf里面一样换行。It doesn't work。
然后我想,那肯定是像文本文件中一样,需要回车换行两个字符来表示换行效果,所以我用 /n/r。还是不行。
上网一查,原来应该用 /r/n···试一试,OK。
后来还发现了一个问题,直接在CAboutDlg构造函数里面修改了m_sProgramInfo的值之后发现不能在这个对话框资源上使用ClassWizard了。应该避免直接修改VC自动生成的代码,正确的做法应该是在主窗口的OnInitDlg()中,显示About对话框的时候对该对话框进行设置。
在程序主窗口上点左键让说明窗口消失,这个好办。
有个细节要注意,DestroyWindow()只是让窗口不再显示,并没有销毁这个对象,所以多次点鼠标左键的时候不会出现空指针的问题。在销毁对象的场合需要注意这个细节。
但是,在程序主窗口上按F1让说明窗口再出来,遇到麻烦了。
首先我给WM_KEYDOWN消息增加响应函数,结果发现按下键盘上的F1键根本就没调到这个函数,系统自动去找.HLP文件。
然后我再给WM_CHAR消息增加响应函数,结果跟上面一样。困惑了,难道键盘输入时发送的是别的消息?那这两个消息做什么用?
- 编程经验_Visual C++ 6.0_启动程序时伴随主窗口弹出程序说明窗口(2)
- 编程经验_Visual C++ 6.0_启动程序时伴随主窗口弹出程序说明窗口(1)
- VC程序启动时隐藏主窗口
- 让Sublime Text 2运行程序时弹出命令行窗口
- 【窗口编程】一个简单的C语言窗口程序
- win32程序窗口风格说明
- VC使程序启动时隐藏窗口
- 程序在启动时隐藏窗口
- 对话框程序启动隐藏窗口
- Windows程序编程(2):窗口创建
- 启动程序进程不显示程序窗口
- 弹出窗口属性说明
- Windows 编程- 生成窗口程序
- 最简单的窗口弹出程序
- 禁止程序出错后,弹出错误窗口
- 通过注册表配置弹出窗口阻止程序
- 简单的c窗口程序
- 改变c程序窗口颜色
- 牧码客(卢益贵):专业取名软件——吉名宝
- 测试一下CSDN的博客好使不好使
- 添加ubuntu桌面图标
- 天天Android - 2010-10-14
- What IS Agile? A Useless Theoretical Question or Necessary Clarity for Success?
- 编程经验_Visual C++ 6.0_启动程序时伴随主窗口弹出程序说明窗口(2)
- camera的应用程序application和驱动driver交互的各种参数
- 急求积分
- 一个类牵涉到其他类的Json文件
- CSS所有属性的集合以及解释
- MyEclipse 光标跳动的解决方案
- 编程语言的发展趋势及未来方向
- ORACLE STARTUP 命令
- Testing