VC-界面设计
文章平均质量分 51
primer_programer
永无止境
展开
-
自定义ToolBar的实现
工具栏的按钮可以设置三种状态的图片,SetImageList,SetHotImageList,SetDisabledImageList。方法如下: BOOL CMainFrame::createExToolBar(){ CImageList imgListToolBar; if(!m_wndReBar.Create(thi原创 2008-08-01 18:37:00 · 7043 阅读 · 0 评论 -
在程序中执行命令行参数
使用下面函数:WinExec( szCmdLine.c_str(), SW_SHOW ); ShellExecute函数也可以执行命令行参数,有时WinExec函数执行结果并不理想,函数返回值是正确的,但是实际上执行却没有成功。我曾在注销一个自定义控件时发生过此问题,后来用ShellExecute函数代替。ShellExecute( NULL,原创 2007-12-26 21:06:00 · 1659 阅读 · 0 评论 -
在程序中注册ActiveX控件(.OCX)的函数
.ocx文件可以放在任何目录,包括桌面上。注册有两种方法: (转)其一: 注册:RegSvr32 c:/windows/system/文件名.OCX反注册:RegSvr32 /u c:/windows/system/文件名.OCX 其二:.ocx文件是一个特殊的动态连接库,输出两个函数一个注册,一个反注册:注册:DllRegisterSe转载 2007-12-26 21:04:00 · 1189 阅读 · 0 评论 -
VC控件——CTreeCtrl中HitTest的用法
用来获取鼠标当前位置,所在的Item句柄。 HTREEITEM hItem;const MSG* pMessage;CPoint pt;UINT nFlags;pMessage = GetCurrentMessage();ASSERT ( pMessage );pt = pMessage->pt;ScreenToClient( &原创 2007-12-26 21:03:00 · 5372 阅读 · 1 评论 -
鼠标单击窗口标题栏,不能拖动窗口
afx_msg UINT OnNcHitTest( CPoint point ); UINT C***Dlg::OnNcHitTest( CPoint point ){ UINT nHitTest; nHitTest = CWnd::OnNcHitTest( point ); if( nHitTest == HTCAPT原创 2007-12-26 21:00:00 · 2494 阅读 · 0 评论 -
VC控件——CToolTipCtrl的用法
很多的界面设计都需要有Tip提示,下面描述一下Tip的简单使用方法: 1. 首先要New一个CToolTipCtrl的对象m_pContentTip 2. 调用CToolTipCtrl的create函数,指定其父窗口。可以为某个控件,也可以为this。一般设为this。 m_pContentTip->Create( this, TTS_ALWAYSTIP );3. A原创 2007-12-26 20:59:00 · 2761 阅读 · 0 评论 -
VC控件——让Static控件的文本具有滚动效果
在网上查找一些方法,也在codeproject上下载了几个源码,发现都没有达到我的目的。于是自己研究出一个方法: 实现效果:文本从右向左滚动,初始字符串在Static控件左边逐渐消失,当全部消失后,从Static的右边向左一点点的显示出来。如果Static控件的文本变化,则滚动从头开始。实现方法分为两步:1. 从Static控件左边一点点消失 设置Timer,T原创 2007-12-26 20:57:00 · 3955 阅读 · 0 评论 -
获取窗口句柄的几个函数
GetActiveWindowSetFocus、GetActiveWindow等并不是全局的API函数,他们只针对于当前的县城。如果当前线程创建的窗口中没有激活的窗口,GetActiveWindow就会返回空值。 GetForgroundWindow与GetActiveWindow的区别在一个Button按钮的相应函数中来获取这两个函数所返回的句柄是一样的,其他情况则未必原创 2007-12-26 20:56:00 · 1604 阅读 · 0 评论 -
CImageList使用指南
1.综述在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,为他们提供图标资源。图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以数组方原创 2007-12-26 20:53:00 · 1750 阅读 · 2 评论 -
WebBrowser控件——设置滚动条位置
遇到一个问题:在用WebBrowser控件打开网页后,让网页中的滚动条滚动到最底部。在网上找到了方法:用DCOM组件技术,获取HTML接口指针。(前一阵做调用网页中的JavaScript函数也是采用这种技术)。代码如下:boolput_scrollTop(){ HRESULT hr; CComPtr spDisp;原创 2007-12-26 21:08:00 · 7040 阅读 · 3 评论 -
ShellExecute函数的用法
ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的转载 2007-12-26 15:26:00 · 9945 阅读 · 1 评论 -
CFileDialog使用详解
CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVER原创 2007-12-26 16:47:00 · 1898 阅读 · 0 评论 -
动态菜单的实例(使用OnCommand)
我想实现一个动态的自定义的菜单,类似于某些Email客户端软件的附件按钮。点击附件按钮,会弹出一个菜单,每一个附件是一个菜单项,点击菜单项将附件保存至本地。 菜单项不固定;响应函数不固定;经过研究在OnCommand函数中可实现。菜单命令是交由OnCommand函数处理的,在这个函数中完成命令消息的路由。 第一步:需要定义菜单项的ID。 这里需要定义菜单原创 2008-07-30 13:02:00 · 2918 阅读 · 0 评论 -
屏蔽“服务器正在运行”对话框
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE); AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER); AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);原创 2008-07-16 16:16:00 · 1086 阅读 · 0 评论 -
GetProp和SetProp的用法
在百度百科中对GetProp和SetProp的解释如下:GetProp函数功能:该函数从给定窗口的属性列表中检索数据句柄。给定的字符串标识了要检索的句柄。该字符串和句柄必须在前一次调用SetProp函数时已经加到属性表中。 函数原型:HANDLE GetProp(HWND hWnd,LPCTSTR lpString); 参数: hWnd:指向要搜索属性表的窗口原创 2008-01-18 10:01:00 · 22212 阅读 · 2 评论 -
WebBrowser控件——使用COM组件经验
在实际开发的过程中,遇到这样一个问题,使用WebBrowser控件打开一个网页,网页里面加载了一个OCX控件,需要实现两个功能,一个是调用网页中JavaScript函数,一个是移动网页中滚动条的位置。两个功能都用到了COM组件技术。同样都遇到了一个问题,在主程序关闭时,网页中的OCX控件出现异常。开始怀疑是OCX控件在释放资源时有问题,后来调试发现WebBrowser控件关闭时,OCX控原创 2007-12-26 21:10:00 · 4037 阅读 · 3 评论 -
使用SkinMagic工具为对话框换肤的基本方法
一、 制作皮肤文件首先要学会使用SkinMagicBuilder工具制作皮肤文件。1. 新建/删除皮肤窗口SkinMagic Toolkit中有两种方法新建皮肤窗口:(1) 使用菜单栏中的“Object”项,选择“Window”-〉“SkinFrameWindow”即可;(2) 使用Skin Object工具栏。首先选中“View”菜单下的原创 2007-12-26 20:39:00 · 3547 阅读 · 0 评论 -
非模态对话框的释放方法
异常听到下面函数:BOOL CWnd::ContinueModal() { return m_nFlags & WF_CONTINUEMODAL; } 因为窗口没有WF_CONTINUEMODAL风格 1, 如果是模态对话框 如果以下面的方式来使用也会有这个问题 CTestDialog a原创 2007-12-26 20:33:00 · 1153 阅读 · 0 评论 -
刷新--单独刷新某个控件
在给对话框加上皮肤后,发现一个问题:对话框上的Static控件显示的文字不刷新,又不想使用Invildate函数将整个界面都重绘一下。只刷新Static控件的方法如下: CRect rect; GetDlgItem( IDC_STATIC_INFO_TEXT )->GetWindowRect( &rect ); ScreenToClient原创 2007-12-26 18:15:00 · 2028 阅读 · 0 评论 -
在对话框第一次弹出时设置控件焦点
virtual BOOL OnInitDialog( );Return ValueSpecifies whether the application has set the input focus to one of the controls in the dialog box. If OnInitDialog returns nonzero, Windows sets the input原创 2007-12-26 17:32:00 · 2880 阅读 · 2 评论 -
AfxMessageBox——模态与非模态的问题
在实际编程中发现:1, 先弹出一个AfxMessageBox,使用全局的,它为模态的。2, 再创建一个非模态对话框,假设为Dialog1。3, 当Dialog1关闭时,AfxMessageBox变为非模态的。 最后总结了两种情况:1, 先弹出AfxMessageBox,后创建非模态对话框。2, 先创建非模态对话框,后弹出AfxMessageBox。原创 2007-12-26 20:35:00 · 6817 阅读 · 1 评论 -
创建非模态对话框
模态对话框是DoModal出来的,而非模态对话框是Create创建的。 CTestDlg* oCTestDlg;oCTestDlg = new CTestDlg (this);oCTestDlg->Create( IDD_MEDIA_SERVER_SPACE_ALERT, this );CRect rect;this->GetClientRect( &rect )原创 2007-12-26 20:31:00 · 1396 阅读 · 0 评论 -
刷新--界面刷新函数比较
一:什么时候才会发生重绘窗口的消息? 当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。二:Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数有什么异同? Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系原创 2007-12-26 17:50:00 · 2985 阅读 · 0 评论 -
PreTranslateMessge与sendmessage
PreTranslateMessage()的处理过程如下: 首先判断该消息是否是一个线程消息(消息的窗口句柄为空的消息),如果是,交给DispatchThreadMessageEx()处理。MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。 只有穿过消息队列的消原创 2007-12-26 17:45:00 · 1168 阅读 · 0 评论 -
两个对话框类相互包含头文件遇到的问题
两个对话框的类:CTestDlg1 对应头文件TestDlg1.hCTestDlg2 对应头文件TestDlg2.h 当在TestDlg1.h中包含了TestDlg2.h后,在TestDlg2.h中再包含TestDlg1.h时编译就会出错。 可以这样使用:TestDlg2.h #include TestDlg1.h(如果还有错,可以在此处只声明cla原创 2007-12-26 17:41:00 · 1289 阅读 · 0 评论 -
SendMessage消息参数的用法
开始的时候传消息参数是这样用的:发送消息:double dSize;SendMessage( Hwnd, 自定义消息, 0, dSize );接收消息函数:void recieveMessage( WPARAM wParam, LPARAM lParam ){ double dSize = (double)lParam;}结果:在发送消息的时候,dSize原创 2007-12-26 17:37:00 · 2411 阅读 · 0 评论 -
对话框的关闭与对象的消亡
假设CTestDlg类CTestDlg dlg;dlg.DoModal()弹出一个对话框,如果收到WM_CLOSE消息后,对话框关闭,但是dlg对象没有被销毁,也没有调用析构函数,只是界面销毁了,实际上的变量等等都没有释放。仍然可以调用dlg的成员函数。 如果是主对话框,那么关闭对话框后,程序就退出了,这时会释放所有资源,主对话框类的析构函数在这时被调用。如果是主对话框原创 2007-12-26 17:30:00 · 912 阅读 · 0 评论 -
个人对Program Manager窗口的理解
我说的可不是项目经理,而是在编程过程中发现的一个窗口。 在对窗口进行遍历的时候,发现有一个窗口标题为Program Manager的窗口,在网上搜了一下,csdn上有人说它与DeskTop相同,那就是桌面窗口。 在程序中用到Program Manager时发现的确和桌面窗口的画面一样,所以就把它理解为桌面窗口了。原创 2007-12-26 17:28:00 · 2320 阅读 · 0 评论 -
创建字体以及文本控件显示的总结
使用控件默认的字体,同时显示日文和中文时,会出现乱码,根据SkinMagic里面的设置,使用MS Sans Serif(微软细明字)字体,可以解决该问题。使用该字体同时在文本控件上显示中文,日文和英文三种语言都可以。 创建字体,然后将文本控件SetFont。 m_fontScrollText.CreateFont( 18,原创 2008-01-29 11:37:00 · 1119 阅读 · 0 评论 -
GetKeyState 和 GetAsyncKeyState 区别
使用::GetKeyState()返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用0来判断。 0x8000是16进制数,用2进制表示为1000 0000 0000 0000, &是按位与 同样,如果键被按下,返回值最高位为1,则1xxx xxxx xxx转载 2008-01-28 18:56:00 · 2338 阅读 · 0 评论 -
[Inno Setup]闪屏、背景音乐、标签URL地址、关于按扭四合一
[Setup]AppName=FKtemps2.1(教学)AppVerName=FKtemps Ver 2.1(教学)AppPublisher=FKtemps(教学)AppVersion=2.1DefaultDirName=C:/Program Files/FKtempsDefaultGroupName=FKtemps2.1(教学);安装输出目录(默认.iss文件的Output下)转载 2007-12-26 17:52:00 · 5412 阅读 · 2 评论 -
VC控件--在ListCtrl中加入CheckBox控件
(1)首先,设置list列表的风格ListView_SetExtendedListViewStyle (m_lvTestList.m_hWnd, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);使得list控件支持checkbox LVS_EX_CHEC原创 2007-12-26 17:55:00 · 10982 阅读 · 0 评论 -
VC控件--微调控件使用和详细说明
一般应用:设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环)Arrow keys(当按下向上和向下方向键时,控件可以增加或减小)OnInitDialog函数中设置控件数值范围:SetRange(0,255);旋转按钮控件 “旋转按钮控转载 2007-12-26 18:01:00 · 4075 阅读 · 0 评论 -
按钮失去焦点
按钮失去焦点的响应函数是OnKillFocus,可以继承CButton类,然后重载OnKillFocus函数,当捕获到按钮失去焦点时,处理自定义的操作。 值得一提的是,EnableWindow函数,可以引发按钮焦点的失去,disable按钮失去焦点,enable按钮得到焦点。原创 2007-12-26 20:29:00 · 2962 阅读 · 0 评论 -
屏蔽程序弹出的帮助文件提示
1,我先屏蔽了F1键,但是没好用。BOOL CSettingDlg::PreTranslateMessage(MSG* pMsg){ // TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。 if ( pMsg->wParam == VK_F1 ) { return FALSE; }原创 2007-12-26 20:27:00 · 763 阅读 · 0 评论 -
去掉对话框在任务栏中的显示框
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW,0);原创 2007-12-26 20:25:00 · 971 阅读 · 0 评论 -
VC控件--CListCtrl使用技巧(二)
20. listctrl的subitem添加图标 m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES); m_list.SetItem(..); //具体参数请参考msdn 21. 在CListCtrl显示文件,并根据文件类型来显示图标 网上找到的代码,share B转载 2007-12-26 18:22:00 · 1685 阅读 · 0 评论 -
VC控件--CListCtrl使用技巧(一)
1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”转载 2007-12-26 18:20:00 · 1273 阅读 · 0 评论 -
程序图标的设计
在文件夹下有集中图标大小显示:缩略图、列表等。总共有三种分辨率大小,48*48、32*32、16*16在做程序使用的ico文件时,专业人士做出来,一个ico文件是包含几张不同分辨率的图片的。http://www.microsoft.com/china/msdn/archives/library/dnwxp/html/winxpicons.asp在VC6.0加载ico文件时,自动将其原创 2007-12-26 18:18:00 · 856 阅读 · 0 评论 -
VC控件--控件的大小与像素之间的转换
本人是做对话框的皮肤时遇到的问题,有人说用GetDialogBaseUnits函数,可惜将用此方法按照图片大小(以像素为单位)计算出来的对话框大小却不正确。不过先将此方法写出来,待正确了再来修改。 函数功能:该函数返回系统的对话基本单位,该基本单位为系统字体字符的平均宽度和高度。对于使用系统字体的对话框,可以用这些值在对话框模板之间转换,比如在对话框模板和像素之间。对于不使用系统字体的原创 2007-12-26 18:05:00 · 3046 阅读 · 0 评论