vc6,MFC, disable close(X) 异常

kobefly 2010-05-12 11:26:22
在VC6中用MFC做了一个对话框,
这个对话框用于显示进度变化,
也就是说,这个对话框在Timer里做了一些操作
而这些操作有些是需要一些时间的,也就意味着这个对话框在某些时间无法响应事件...

在所有操作没有完成之前, 我是把右上角的close button, 也就是那个红X给disable的

但是现在遇到一个问题,
在对话框无法响应的时间点击或者拖动对话框, 那个X会enable起来一会,反应过来后会再disable,
而且在enable的时候, 是可以真的关掉对话框的

用VS 2008编译, 没有发现这个问题,
有兄弟碰到过此问题吗, 可否解决?

谢谢
...全文
183 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-05-14
  • 打赏
  • 举报
回复
其实是这样的
标题栏实际上是操作系统接管的
当你的程序无响应是操作系统会让用户有一种关闭程序的途径
所以你的关闭按钮会被启用
而当你的程序有相应了自然就按你自己的方式处理了
这样做的好处是用户不会因为程序的down掉而无法关闭
所以你应该改变处理机制
不过以上只是个人猜测
没有理论支持
仅供参考
kobefly 2010-05-14
  • 打赏
  • 举报
回复
目前看起来,
在单线程下没有什么好的办法?
kobefly 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xianglitian 的回复:]
其实是这样的
标题栏实际上是操作系统接管的
当你的程序无响应是操作系统会让用户有一种关闭程序的途径
所以你的关闭按钮会被启用
而当你的程序有相应了自然就按你自己的方式处理了
这样做的好处是用户不会因为程序的down掉而无法关闭
所以你应该改变处理机制
不过以上只是个人猜测
没有理论支持
仅供参考
[/Quote]

恩, 有可能这种情形
那我就另起一个线程了...


顺便问一个问题, 我一个dialog里有2个button,
打算加上hotkey, 也就是在首字母前加&

发现一个问题, 下划线不会显示,
当按下ALT键后, 下划线会显示出来,

请问能否一直让下划线显示呢?
wuhuwy 2010-05-13
  • 打赏
  • 举报
回复
你在Timer的过程中直接屏蔽Close消息不也可以吗,等进度完成后再取消屏蔽消息
kobefly 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xianglitian 的回复:]
引用 5 楼 kobefly 的回复:
引用 4 楼 xianglitian 的回复:
你这个需求是不是应该采用多线程处理


恩, 我想多线程应该可以解决问题,
只是我想在目前不改变程序结构的情况下,
VC6有否可能解决这个问题呢?

6.0也可以做多线程啊
[/Quote]

恩, 是可以的
不知道单线程有否解决办法呢
向立天 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kobefly 的回复:]
引用 4 楼 xianglitian 的回复:
你这个需求是不是应该采用多线程处理


恩, 我想多线程应该可以解决问题,
只是我想在目前不改变程序结构的情况下,
VC6有否可能解决这个问题呢?
[/Quote]
6.0也可以做多线程啊
Eleven 2010-05-13
  • 打赏
  • 举报
回复
这样大量的计算操作还是不要放在主线程里去做吧,界面不能得到及时的响应总归是不好的
kobefly 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuhuwy 的回复:]
你在Timer的过程中直接屏蔽Close消息不也可以吗,等进度完成后再取消屏蔽消息
[/Quote]
这样的话, X还是会被disable的在这过程中,
只是不会被关掉吧
kobefly 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xianglitian 的回复:]
你这个需求是不是应该采用多线程处理
[/Quote]

恩, 我想多线程应该可以解决问题,
只是我想在目前不改变程序结构的情况下,
VC6有否可能解决这个问题呢?
向立天 2010-05-13
  • 打赏
  • 举报
回复
你这个需求是不是应该采用多线程处理
kobefly 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
也许你某个地方代码又把它enable了,例如:你timer如果做状态翻转,可能上次没完成,下次timer又到,就又enable了

如果找不到enable的真正原因你是不可能解决的,所有的解决方法都依赖于你知道什么时候窗口应该禁止这个
[/Quote]

恩,理论上是这样子的
我的timer事件其实只会执行一次,
代码中没有去enable这个X的

而且同样的代码, 我用visual studio 2008来编译就不会出现这个现象

我在想, 这会不会是VC6的MFC 库的一个bug,
我是MFC新手, 对这个对话框的重绘过程不是很懂的

arong1234 2010-05-12
  • 打赏
  • 举报
回复
也许你某个地方代码又把它enable了,例如:你timer如果做状态翻转,可能上次没完成,下次timer又到,就又enable了

如果找不到enable的真正原因你是不可能解决的,所有的解决方法都依赖于你知道什么时候窗口应该禁止这个
1,01.zip
Toolbar - Custom status messages and tooltips
用户状态信息与工具提示(3KB)
2,02.zip
Remove system menu from floating toolbar
从浮动工具条中去除系统菜单(2KB)
3,03.zip
Remove close button from floating toolbar
从浮动工具条中去掉关闭按钮(2KB)
4,customizable1.zip
Customizable toolbar
可自定义的工具条(25KB)
5,detoolbar.zip
Adding a drop arrow to a toolbar button
带下拉框的工具条(28KB)
6,detoolbare.zip
Using Hot Toolbar Buttons
类似IE4的工具条(30KB)
7,BCGControlBar.zip
Customizable Toolbar and Menus
可自定义的工具条 (2)(318KB)
8,FixMiniFrame.zip
System menu fix for floating toolbar
更改浮动工具条中的系统菜单(24KB)
9,09.zip
DevStudio like Flat Toolbar
平面工具条 (需 IE3+)(5KB)
10,enh_flatbar.zip
Another Flat ToolBar (does not require MSIE)
另外一种平面工具条 (不需 IE)(81KB)
11,VSOMenu.zip
Visual Studio/Office 97 style Flat Toolbar and Dockable Menu bar
类似Visual Studio/Office 97 的平面工具条与可停靠菜单条(2)(200KB)
12,RebarMenu.zip
IE4 Style Menu (Rebar Menu)
类似IE4 的菜单条(72KB)
13,ToolbarHi.zip
Toolbar with 16M colour images
使用16M色图象的工具条(66KB)
14,multi12.zip
Extended Multi Size Multi Color Toolbar!
扩展型多尺寸多色彩工具条(226KB)
15,15.zip
How to display tooltips for a toolbar in a dialog
在对话框如何为工具条显示工具提示(3KB)
16,16.zip
Displaying text on a Toolbar
在对话框如何为工具条显示工具提示(2KB)
17,toolbar_d.zip
Docking Toolbars Side-By-Side
工具条的停靠(29KB)
18,toolbars.zip
Toolbars with Tooltips in a CFormView derived class
在CFormView派生类中使用带工具提示的工具条(29KB)
19,SwitchTB.zip
Switching Toolbars in MDI
MDI中具有开关显示功能的工具条(47KB)
20,Place Controls on ToolBars
在工具条中放置其他控件(10KB)
21,DialogBarEx1.zip
CDialogBarEx : A Dialog bar with initialization
CDialogBarEx :带初始化的对话条(42KB)

1,01.zip
Setting selected text to read-only
设置选择的文本为只读(2KB)
2,02.zip
Changing word wrap mode
改变换行模式(2KB)
3,03.zip
Changing tab stops
改变tab的行数(2KB)
4,04.zip
Inserting an RTF string using StreamIn
用RTF插入一个RTF字符串(3KB)
5,05.zip
Providing a Format toolbar
提供一个格式的工具框(8KB)
6,06.zip
convert RTF String RTF tags
变换字符串为RTF格式(7KB)
7,07.zip
CRichEditCtrlEx - Advanced Rich Edit Control
CRichEdit的继承类(21KB)
8,08.zip
The Richedit Ctrl used in chatting
在聊天程序中用Richedit(37KB)
9,09.zip
CRichEditCtrlEx : Replacing "RICHEDIT" control with "RichEdit20A"
替代RichEdit的类CRichEditCtrlEx(16KB)
10,10.zip
Controlling the RichTextCtrl Insert State
控制RichTextCtrl中Insert键状态(80KB)
11,11.zip
CAutoRichEditCtrl - automate rich edit formatting and RTF handling.
自动格式化RTF的继承类CAutoRichEditCtrl(62KB)

1,02.zip
Adding a Control to the Property Sheet
在属性页中添加控件(2KB)
2,06.zip
Using Shortcut Keys for Property Pages
在属性页中使用快捷键(2KB)
3,07.zip
Creating a Property Sheet Inside a Form View - Asaf Levy
在Form View中创建属性页(4KB)
4,08.zip
Creating a Property Sheet Inside a Dialog
在对话框中创建属性页(3KB)
12,18.zip
A resizable property sheet within a view
在视中改变property sheet的大小(4KB)
13,19.zip
overriding the default buttons on CPropertySheets
在CPropertySheets中覆盖默认按钮(2KB)
14,20.zip
Display only One Row of Tabs
只显示一行Tab选择(2KB)
15,21.zip
Add a Font Property Page
添加字体属性页(16KB)
16,22.zip
Resizing the Property Sheet
改变属性页的大小(2KB)
17,23.zip
Resizing the Tab Control
改变Tab控制的大小(2KB)
18,24.zip
Moving and Resizing the Property Pages
移动并改变属性页大小(3KB)
20,27.zip
Using ON_UPDATE_COMMAND_UI in Property Pages
在属性页中使用ON_UPDATE_COMMAND_UI(2KB)
22,29.zip
Inserting a CFormView into a CPropertySheet
将CFormView插入到属性页中(2KB)
23,30.zip
Using Upper- and Lowercase shortcut Keys for Property Pages
在属性页中使用大写和小写快捷键(2KB)
25,32.zip
Automaticaly arange visible controls below the tab control
TAB控制中使控件自动可见(2KB)
27,34.zip
Creating a wizard
创建一个向导(4KB)
21,propsheet1.zip
Propertysheets embedded in Dialogs
在对话框中嵌入Propertysheets(20KB)
24,propinprop.zip
Using shortcut keys in property pages containg property pages
在属性页中使用快捷键(74KB)
26,newprop.zip
Adding a Button to CPropertySheet
在属性页中添加按钮(19KB)
28,PropSheet.zip
Property Sheet Wizard
属性页Wizard(96KB)<96KB>
5,wizprop.zip
Wizard Property Sheets and Pages
Wizard方式的属性表与属性页(3KB)
6,creatingl.zip
Creating a full application using the CPropertySheet.
用CPropertySheet创建完整的应用程序(91KB)
7,updcreate.zip
Creating a full application using the CPropertySheet
更新: 用CPropertySheet创建完整的应用程序(12KB)
8,addbitmap.zip
Placing A Bitmap In The PropertySheet Button Area
将一个位图放到PropertySheet的按纽区域(2KB)
9,add3dtext.zip
Placing a 3D Logo Text In the PropertySheet Button Area
附加功能是控制PropertySheet区域特别是按纽部分的颜色(37KB)
10,proppage.zip
Modifying Property Sheet Templates on Win95
在Win95中修改属性页模板(2KB)
11,propview.zip
Using a modeless property sheet as a 'view' in a Frame
使用非模式的property sheet, 就像框架中的视(53KB)

1,VCMenu.zip
Visual Studio/Office 97 style Flat Toolbar and Dockable Menu bar
类似Visual Studio/Office 97的平面工具条与可停靠菜单条(350KB)
2,contentmenu.zip
A Cool Looking Menu For Easier Navigation
一个很COOL的菜单条(39KB)
3,freemenu.zip
Owner Drawn Menu With Free Color & Font
可使用任意字体与颜色的自画式菜单(35KB)
4,04.zip
Owner Drawn Menu with Icons
带图标的自画式菜单(5KB)
5,05.zip
Owner Drawn Menu with Icons (2)
带图标的自画式菜单(2)(8KB)
6,owner_menu4.zip
Owner Drawn Menu with Icons (4) (automatically uses toolbar res)
带图标的自画式菜单(4) (自动使用工具条对应资源)(109KB)
7,bitmapmenu.zip
Yet another owner draw menu
更新"带图标的自画式菜单"(2)(6KB)
8,bcmenu24.zip
Owner Drawn Menu with Icons (3)
带图标的自画式菜单(3) (使用工具条资源)(62KB)
9,09.zip
Inserting submenus in an existing SDI menu
在SDI菜单中插入子菜单(2KB)
10,10.zip
TrackPopupMenu as an Immediate Function
使用 CMenu::TrackPopupMenu 跟踪弹出菜单的菜单项(2KB)
11,Creating Popup Menus with Titles
Creating Popup Menus with Titles
带提示的弹出式菜单(5KB)
12,12.zip
Finding a menu item position from command id
从Command ID中寻找菜单项(3KB)
13,13.zip
The simplest way to put the MRU list in a submenu
将MRU列表加入子菜单的简单途径(2KB)
14,14.zip
Using MRU on a submenu
在子菜单中使用MRU(3KB)
15,15.zip
MRU list in a submenu: the MFC bug and how to correct it.
子菜单中的MRU列表: 更正MFC bug(3KB)
16,16.zip
Merging Two Menus
合并两个菜单(3KB)

1,03.zip
Serializable CListCtrl with check sum verify(4KB)
连续的列表项的校验和
2,11.zip
Getting the number of columns in report view
获得列表视图的列数(2KB)
3,12.zip
添加一列
Adding a column(2KB)
4,13.zip
Detecting column index of the item clicked
监测单击项的索引(13KB)
5,14.zip
Prevent CListCtrl column resizing
禁止调整列表控制的大小(2KB)
6,16.zip
How to force a minimum column width
限定一个最小列宽(16KB)
7,17.zip
Autosize a column to fit its content
自动调整列的大小(3KB)
8,18.zip
Stationary Columns
固定的列数(4KB)
9,19.zip
Disable clicking on selected report view columns
禁止鼠标在列表视图单击(2KB)
10,21.zip
Dragging columns to rearrange column sequence
重新排列次序(6KB)
11,22.zip
Dragging Items to Rearrange Rows
重新排列行数(5KB)
12,24.zip
Allowing items to be edited
允许列表项编辑(2KB)
13,27.zip
Using a drop down list to change a subitem
用托放改变子项(10KB)
14,GridList.zip
Multiline Editable Subitems
多列可编辑的子项(95KB)
15,subitems2.zip
Editing listview subitems using LVM_GETEDITCONTROL
用LVM_GETEDITCONTROL事件来编辑列表视图(46KB)
16,32.zip
Drawing horizontal and vertical gridlines
画水平和竖直的网格线(9KB)
17,33.zip
List control with single / double separator lines
带有一个/两个分割线的列表控制(10KB)
18,34.zip
Subclassing the List View Control using MFC
MFC写的列表视图子类(3KB)
19,35.zip
Catching header messages in a CListView
捕捉CListView的头消息(2KB)
20,36.zip
How do I use a derived CListCtrl with a CListView?
怎样使用来源于CListCtrl的列表视图(2KB)
21,40.zip
Using sub-strings in non report view
获得报表视图的子串(2KB)
22,Treelist.zip
TreeList : Multi column tree control
多列的树性列表控制(79KB)
23,43.zip
Connect a list container to a tree/list control
连接一个列表容器到列表控制(4KB)
24,listclass1.zip
Class with full row highlighting
高亮文本的列表框(8KB)
25,46.zip
IE4 Extended Styles in a list control
和IE4类似的列表控制(4KB)
26,sorted_Class.zip
CSortedListCtrl reusable base class
可以再度使用的排序列表基类(61KB)
27,48.zip
Measure Item for dynamic font changing in a list control
动态的改变列表控制的字体(2KB)
28,supergrid.zip
SuperGrid - Yet Another listview control(84KB)
用Listview写的网格控制
29,clistie4.zip
Class for using new features in listview control
列表视图的子类(5KB)
30,51.zip
Plug-in class to support printing from a listview
列表视图的插件类 (6KB)
31,52.zip
Print the contents of the list control
打印列表视图的内容(7KB)
32,property12.zip
Creating an Object Property List using the CListCtrl
用ClistCtrl类创建一个属性列表(57KB)
33,56.zip
Retrieving selected items
找回选择的项的内容(2KB)
34,57.zip
Selecting and deselecting a range of rows
选择和反选择一定范围的行(2KB)
35,58.zip
Selection Highlighting of Entire Row
选择高亮整行(12KB)
36,59.zip
Set focus on a cell
设置一个单元获得焦点(2KB)
37,60.zip
Sorting the list based on text in any column
按列表的文本排序(3KB)
38,61.zip
Sorting list on Numeric Column
按列表的数值排序(2KB)
39,62.zip
Sort list based on text/numeric/date-time in any column
按列表的文本\数值\时间排序(3KB)
40,63.zip
Sort list (numeric/text) using callback
用回调函数按数值/文本排序 (3KB)
41,64.zip
Sort columns by the image index of the column
通过图像索引排序(3KB)
42,66.zip
Sorting the list when user clicks on column header
当用户单击列标题时排序(3KB)
43,67.zip
Indicating sort order in header control
指示列标题的排序(5KB)
44,68.zip
Simple list Sorting on Integer Colum
按列表的数值排序(2KB)
45,69.zip
A Multi Column Sort listview
一个多列排序的列表视图(37KB)
46,70.zip
Determining row indices in SortItems() Comparison function
用SortItems函数监测行复数(3KB)
47,75.zip
Handling Title Tips With Drag/Drop Headers Using The Visual C++ 6.0 CListCtrl
处理标题的提示(3KB)
48,76.zip
Attaching System ImageList to ListControl
附带系统图像的列表控制(3KB)
49,77.zip
Initializing the image list
初始化图像列表(2KB)
50,78.zip
Setting or removing an image for an item
设置和删除项中的图像(78KB)
51,79.zip
Setting a non-standard size image
设置一个非标准的图像(4KB)
52,83.zip
List Control displaying image thumbnails
在列表控制中显示小图像(23KB)

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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