社区
C++ Builder
帖子详情
主窗体可以用hide()来隐藏吗
Iamsnowgirl
2003-08-22 03:42:47
主窗体可以用hide()来隐藏吗,为什么我的就不能
...全文
94
8
打赏
收藏
主窗体可以用hide()来隐藏吗
主窗体可以用hide()来隐藏吗,为什么我的就不能
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Siney
2003-08-26
打赏
举报
回复
showwindow和所有改变窗体位置的函数都不能在Create函数中调用,否则会有错误。
Iamsnowgirl
2003-08-26
打赏
举报
回复
问题是我的form1是用showwindow()函数在form的初始化事件中使form1充满整个屏幕的
Iamsnowgirl
2003-08-25
打赏
举报
回复
UP
wupangzi
2003-08-22
打赏
举报
回复
个人认为‘主’窗是不能在子窗体存在的情况下进行隐藏的!我认为可以将两个窗体设置成不是主子关系,而是用调用的关系较好!
pcclever
2003-08-22
打赏
举报
回复
我就是用楼上的方法实现过,你没有实现成功,是不是因为你两个窗体没有相互增加对方的头文件,当Form2关闭时有一个任务就是要form1显示,应该是要增加对方的头文件吧。
yhec
2003-08-22
打赏
举报
回复
Form1Create()
{
Application->ShowMainForm=false;
Form2->Show(); // 假设已自动new
}
Iamsnowgirl
2003-08-22
打赏
举报
回复
我有两个窗口form1和from2,form1是主窗口,我现在想程序刚运行时,隐藏form1,打开form2,当form2中某个条件成立时,隐藏form2,显示form1,然后在form1的某个事件里使form1隐藏,form2显示,用hide和show函数都不能成立
BCB
2003-08-22
打赏
举报
回复
Form1 Create()事件中
Application->ShowMainForm=false;
c#屏幕捕捉程序
this.
Hide
(); //
隐藏
主
窗体
System.Threading.Thread.Sleep(100); //
主
线程休眠1秒,以使用
主
窗体
完全从桌面消失 Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height); //Screen.AllScreens[0]是获取当前所有设备窗口的第一个 Graphics g = Graphics.FromImage(img); g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size); ScreenBody body = new ScreenBody(); body.BackgroundImage = img; body.ShowDialog(); this.pictureBox1.Image = body.getpic; body.Close(); this.Show(); //还原
主
窗体
c#语言登录界面代码一篇
这是一篇菜鸟级的登录界面设计方案. 在VS2005.NET平台下用C#和Access实现用户登录界面的
窗体
应用程序 string conStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db.mdb"; OleDbConnection con = new OleDbConnection(conStr); con.Open(); string cmdStr = "select * from users where userName='" + this.userNameTbx.Text + "' and userPassword='" + this.pswTbx.Text + "'"; OleDbCommand cmd = new OleDbCommand(cmdStr, con); OleDbDataReader reader = cmd.ExecuteReader(); if (reader.Read()) //如果找到用户信息,说明登录成功 { MainForm newForm = new MainForm(); newForm.Show(); //弹出
主
窗体
this.
Hide
(); //
隐藏
用户登录
窗体
} else { MessageBox.Show("用户名或密码错误!"); } reader.Close(); cmd.Connection.Close(); con.Close(); } private void cancleBtn_Click(object sender, EventArgs e) { this.Close(); }
Python Tkinter
窗体
讲解
Python作为自立门户的语言,除了学习它的基础编程之外,它还提供了
窗体
的学习,这样相对来说,它就完整了,如果大家学习过C#
窗体
实现或者Java,MFC等等吧,再学习它就会简单的多。当然大家也不用担心,即使没学过,...
在单文档程序中动态切换多个
窗体
的源码程序
摘要:本文通过一个程序实例描述了在VC++6.0下如何在单文档程序中通过菜单动态控制多 个
窗体
的切换。 一、 引言 我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式 ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同 的
窗体
,如作为数据库前台应用程序就会遇到此类问题,数据库由大量的表单组成,而同常 一个
窗体
内只用来显示一个表单,所以要显示其他的表单时就要用到切换
窗体
的技术了,下 面就通过一个程序说明该技术的实现方法。 二、 实现技术 新建一个基于CFormView的单文档应用程序,再添加一个
窗体
和与之对应的基于 CFormView的新视类,然后通过在
主
框架类里添加控制代码和菜单控制实现这两个
窗体
的动态 切换,下面就是具体的实现过程: (一) 用"MFC AppWizard(exe)"建立一个新项目"SwitchForm",并在第二步的创建类型上选 择为"Single documnet"单文档模式,第三、四、五、六步均取确省状态,最后一步选择 "CFormView"作为视类的基类。点按"完成"按钮,生成了初始工程"SwitchForm"。 (二) 点选菜单"Insert"、"Resource…",在弹出的"Insert Resource"对话框中"Dialog"树 里的"IDD_FORMVIEW",点击"New"按钮,生成了一个新的
窗体
,将其ID号改为"IDD_NEXTFORM"。 在原有的
窗体
上加一个静态框"这是第一个
窗体
";在新建的
窗体
上也添加一个静态框"这是第二 个
窗体
"。 (三) 在菜单资源的"IDR_MAINFRAME"上添加一级菜单"
窗体
切换",及其二级菜单"第一个窗 体"、"第二个
窗体
",其标识号分别为"ID_FIRSTFORM"和"ID_SECONDFORM"。修该"第一个
窗体
" 的属性为"Checked",表明程序初始时显示的是第一个
窗体
。 (四) 在"ClassView"属性页里的"SwitchForm classes"上右键,在弹出菜单上选择 "New Class…",弹出"New Class"对话框,选择"Dialog ID:"为我们刚添加的新
窗体
"IDD_NEXTFORM",选择"Base class:"为"CFormView",类名取为"CNextFormView",这样就把第 二个
窗体
对应的视图类添加到了工程。 (五) 在框架类里添加函数SwitchToForm(): void CMainFrame::SwitchToForm(int nForm) { file://获取原来的活动
窗体
的视图句柄 CView* pOldActiveView = GetActiveView(); file://获取由"nForm"标识的
窗体
所对应的视图句柄 CView* pNewActiveView = (CView*) GetDlgItem(nForm); file://若视图句柄为空,则创建一新的。 if (pNewActiveView == NULL) { if (nForm == IDD_SW99vCHFORM_FORM) pNewActiveView = (CView*)new CSwitchFormView; if (nForm == IDD_NEXTFORM) pNewActiveView = (CView*)new CNextFormView; CCreateContext context; context.m_pCurrentDoc = pOldActiveView->GetDocument(); pNewActiveView->Create(NULL,NULL,0L, CFrameWnd::rectDefault, this,nForm,&context); pNewActiveView->OnInitialUpdate(); } file://选择pNewActiveView为活动
窗体
SetActiveView(pNewActiveView); file://显示活动
窗体
,
隐藏
非活动
窗体
pNewActiveView->ShowWindow(SW_SHOW); pOldActiveView->ShowWindow(SW_
HIDE
); int ID; if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CSwitchFormView)) ID=IDD_SW99vCHFORM_FORM; if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CNextFormView)) ID=IDD_NEXTFORM; file://设置
窗体
的ID号 pOldActiveView->SetDlgCtrlID(ID); pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); RecalcLayout(); } (六)添加两个菜单相对应的命令响应函数和更新函数如下: void CMainFrame::OnFirstform() { file://通过IsKindOf函数确定当前活动窗口是否是第一个窗口,如是,则无须切换, file://否则将通过SwitchToForm函数将当前活动窗口切换到"IDD_SW99vCHFORM_FORM" file://标识的第二个
窗体
。 if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CSwitchFormView))) return; SwitchToForm(IDD_SW99vCHFORM_FORM); } void CMainFrame::OnUpdateFirstform(CCmdUI* pCmdUI) { file://通过IsKindOf函数判断当前活动窗口是否是第一个
窗体
,如是则将其选中。 pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CSwitchFormView))); } void CMainFrame::OnSecondform() { if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CNextFormView))) return; SwitchToForm(IDD_NEXTFORM); } void CMainFrame::OnUpdateSecondform(CCmdUI* pCmdUI) { pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CNextFormView))); } 然后再在该文件开始处添加对两个视图类的引用: #include "SwitchFormDoc.h" #include "SwitchFormView.h" #include "NextFormView.h" 在此须注意:应在两个视类的引用之前添加对文档类的引用,否则会引起编译错误。另外,由于视 类的构造函数在声明时都确省的声明为保护型的,在框架类中无法引用,所以还要将两个视类的类 声明改动如下: class CNextFormView : public CFormView { public: file://将protected 改为public. CNextFormView(); …… }; class CSwitchFormView : public CFormView { public: file://将protected 改为public. CSwitchFormView(); …… }; 三、 编译运行 编译运行程序,开始时的
窗体
上有"这是第一个
窗体
的字样",菜单也只有"第一个
窗体
"是被选中的, 当前的活动
窗体
是第一个
窗体
;点击菜单"第二个
窗体
",视图中的
窗体
上的字样变成了"这是第二 个
窗体
",同时选中的菜单也由"第一个
窗体
"变成了"第二个
窗体
",实现了通过菜单将
窗体
进行动态切换。 总结:此程序中关键的是SwitchToView函数,在此函数中,程序搜索所有当前文档的显示窗口来查找与CruntimeClass变量匹配的视图类。如果找到,该窗口被激活。通过与之类似的方法,还可以实现在多文档模式下的单档(文档)多视(视图),通过不同的视图以不同的方式显示来自同一份文档的数据,以更好的满足程序的需要。
托盘小程序
这几天没事做,研究了下Delphi的托盘编程 。现在很多程序都用这个,比如傲游,迅雷,==,很方便。
主
要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, AppEvnts, StdCtrls, Menus; const WM_NID = WM_User + 1000; //声明一个常量 private { Private declarations } // 定义两个函数 procedure SysCommand(var SysMsg: TMessage); message WM_SYSCOMMAND; procedure WMNID(var msg:TMessage); message WM_NID; public end; var Form1: TForm1; NotifyIcon: TNotifyIconData; // 全局变量 implementation {$R *.dfm} procedure TForm1.WMNID(var msg:TMessage); var mousepos: TPoint; begin GetCursorPos(mousepos); //获取鼠标位置 case msg.LParam of WM_LBUTTONUP: // 在托盘区点击左键后 begin Form1.Visible := not Form1.Visible; // 显示
主
窗体
与否 Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 显示
主
窗体
后删除托盘区的图标 SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW); // 在任务栏显示程序 end; WM_RBUTTONUP: PopupMenu1.Popup(mousepos.X, mousepos.Y); // 弹出菜单 end; end; procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标 end; procedure TForm1.SysCommand(var SysMsg: TMessage); begin case SysMsg.WParam of SC_MINIMIZE: // 当最小化时 begin SetWindowPos(Application.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_
HIDE
WINDOW);
Hide
; // 在任务栏
隐藏
程序 // 在托盘区显示图标 with NotifyIcon do begin cbSize := SizeOf(TNotifyIconData); Wnd := Handle; uID := 1; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallBackMessage := WM_NID; hIcon := Application.Icon.Handle; szTip := '托盘程序'; end; Shell_NotifyIcon(NIM_ADD, @NotifyIcon); // 在托盘区显示图标 end; else inherited; end; end; {以下三个函数为托盘右键菜单,可自行添加功能} procedure TForm1.N1Click(Sender: TObject); begin ShowMessage('Delphi托盘小程序,Code by Zero Zhang'); end; procedure TForm1.N2Click(Sender: TObject); begin Form1.Visible := true; // 显示
窗体
SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW); Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标 end; procedure TForm1.N3Click(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); Application.Terminate; end; end.
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章