基于对话框应用程序一启动后就隐藏窗口?

CloudWater 2002-09-19 04:03:11
问题很弱!:(
...全文
46 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
step_by_step 2002-09-20
  • 打赏
  • 举报
回复
给你看一段我写的程序,用SDK写的.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
char szWinName[] = "WINMAIN";
MSG msg;
HWND hWnd;
WNDCLASSEX wcl;
hInst = hInstance;


wcl.cbClsExtra = 0;
wcl.cbSize = sizeof(WNDCLASSEX);
wcl.cbWndExtra = 0;
wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wcl.hInstance = hInstance;
wcl.lpfnWndProc = WindowProc;
wcl.lpszClassName = szWinName;
wcl.lpszMenuName = NULL;
wcl.style = 0;

if(!RegisterClassEx(&wcl))
{
return 0;
}
hWnd = CreateWindow(
szWinName,
NULL,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(!hWnd)
{
return 0;
}
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在WinMain中不要调用ShowWindow()和UpdateWindow()这两个api则,就不会显示主窗口了,而且屏幕不会有窗口一闪而过.

然后在BOOL CALLBACK WindowProc();回调函数中创建对话框。这样的话主窗口就不会显示了,就直接显示对话框了。
CloudWater 2002-09-20
  • 打赏
  • 举报
回复
TO:孤独白痴
这是基于对话框的应用程序,请问CreateMainWindow在哪儿?
不好意思,小弟太弱!
samsung188 2002-09-20
  • 打赏
  • 举报
回复
在CreateMainWindow()函数里加下面一行就能实现
ShowWindow(hMainWnd, SW_HIDE);
lj9852 2002-09-20
  • 打赏
  • 举报
回复
在Dialog的OnInitDialog()中加入以下代码即可:


WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(& wp);
everandforever 2002-09-19
  • 打赏
  • 举报
回复
这样是不隐藏
BOOL CTest1App::InitInstance()
{
CTest1Dlg* pdlg = new CTest1Dlg;
m_pMainWnd = pdlg;
pdlg->Create( pdlg->IDD, NULL );
pdlg->ShowWindow(SW_SHOW);
return TRUE;
}
everandforever 2002-09-19
  • 打赏
  • 举报
回复
BOOL CTest1App::InitInstance()
{
CTest1Dlg* pdlg = new CTest1Dlg;
m_pMainWnd = pdlg;
pdlg->Create( pdlg->IDD, NULL );
pdlg->ShowWindow(SW_HIDE);
return TRUE;
}
失败,搞这么长时间,
记得要DELETE这个DIALOG.
CloudWater 2002-09-19
  • 打赏
  • 举报
回复
TO:Forever
这也不行,在某些情况下会异常退出;
Iamme 2002-09-19
  • 打赏
  • 举报
回复
代码是公司的
不如你把代码贴上来

//这本来不难啊
CloudWater 2002-09-19
  • 打赏
  • 举报
回复
我是基于对话框程序,用VC6,怎么就不能成功呢?
everandforever 2002-09-19
  • 打赏
  • 举报
回复
唉,解决方案:

BOOL CTest1App::InitInstance()
{
CTest1Dlg dlg;
dlg.Create( dlg.IDD, NULL );
m_pMainWnd = &dlg;
int nResponse = dlg.ShowWindow(SW_HIDE);
return TRUE;
}
CloudWater 2002-09-19
  • 打赏
  • 举报
回复
报内存不能读的错,给不给发一份完整代码我看看,是不是我的对话框风格和你们设置不一样呀?
TO:Forever
这样也不行:(
everandforever 2002-09-19
  • 打赏
  • 举报
回复
糟糕,这个也不行. 脸红啊~~
everandforever 2002-09-19
  • 打赏
  • 举报
回复
唉,这个才对.SORRY
重载PreCreateWindow函数
BOOL CTest1Dlg::PreCreateWindow(CREATESTRUCT& cs)
{
cs &= ~WS_VISIBLE;
return CDialog::PreCreateWindow(cs);
}
step_by_step 2002-09-19
  • 打赏
  • 举报
回复
给你看一段我写的程序,用SDK写的.
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
char szWinName[] = "WINMAIN";
MSG msg;
HWND hWnd;
WNDCLASSEX wcl;
hInst = hInstance;


wcl.cbClsExtra = 0;
wcl.cbSize = sizeof(WNDCLASSEX);
wcl.cbWndExtra = 0;
wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wcl.hInstance = hInstance;
wcl.lpfnWndProc = WindowProc;
wcl.lpszClassName = szWinName;
wcl.lpszMenuName = NULL;
wcl.style = 0;

if(!RegisterClassEx(&wcl))
{
return 0;
}
hWnd = CreateWindow(
szWinName,
NULL,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(!hWnd)
{
return 0;
}
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在WinMain中不要调用ShowWindow()和UpdateWindow()这两个api则,就不会显示主窗口了,而且屏幕不会有窗口一闪而过.
everandforever 2002-09-19
  • 打赏
  • 举报
回复
重载 对话框的 OnCreate( LPCREATESTRUCT lpCreateStruct );函数(即WM_CREATE消息)
修改:
int C*::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
lpCreateStruct->style &= ~WS_VISIBLE;
return 0;
}
Iamme 2002-09-19
  • 打赏
  • 举报
回复
说详细点!
报什么错?
我这儿好好的
CloudWater 2002-09-19
  • 打赏
  • 举报
回复
TO:不死鸟
不行,而且在退出进还报错!
Iamme 2002-09-19
  • 打赏
  • 举报
回复
是在InitInstance()里用
CloudWater 2002-09-19
  • 打赏
  • 举报
回复
TO:Forever
不成功呀,是怎么回事?
everandforever 2002-09-19
  • 打赏
  • 举报
回复
ONINITDIALOG()
加载更多回复(2)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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