怎样隐藏SDK程序在任务栏的图标?不是托盘哦.

WoodJohn 2005-08-13 10:14:49
是一个对话框程序.我从另外一个程序中启动它,但不想看到第2个任务栏图标.

#include <windows.h>
#include "resource.h"

char buffer[255];

BOOL CALLBACK PromptDlgProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstnce, LPSTR lpCmdLine, int nShowCmd)
{
strcpy(buffer,lpCmdLine);
DialogBox(hInstance,MAKEINTRESOURCE(IDD_PROMPT),NULL,PromptDlgProc);
return 0;
}

BOOL CALLBACK PromptDlgProc (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
HFONT holdfont,hnewfont;
PAINTSTRUCT ps;
RECT rect_client,rect_window;
int cxScreen,cyScreen;

switch (message)
{
case WM_INITDIALOG :
cxScreen = GetSystemMetrics (SM_CXSCREEN) ;
cyScreen = GetSystemMetrics (SM_CYSCREEN) ;
GetWindowRect(hDlg,&rect_window);
MoveWindow(hDlg,(cxScreen-(rect_window.right-rect_window.left))/2,
(cyScreen-(rect_window.bottom-rect_window.top))/2,
rect_window.right-rect_window.left,
rect_window.bottom-rect_window.top,
TRUE);
return TRUE ;

case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDOK :
case IDCANCEL :
EndDialog (hDlg, 0) ;
return TRUE ;
}
break ;
case WM_PAINT :
hdc=BeginPaint(hDlg, &ps);
GetClientRect(hDlg,&rect_client);
SetBkMode(hdc,TRANSPARENT);
hnewfont=CreateFont(
10, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"MS Sans serif"); // lpszFacename
holdfont=SelectObject(hdc,hnewfont);
DrawText(hdc,buffer,-1,&rect_client,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hDlg,&ps);
SelectObject(hdc,holdfont);
DeleteObject(hnewfont);
return 0;
}

return FALSE ;
}
...全文
193 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
handsomerun 2005-08-13
在case WM_INITDIALOG :后面
先添上
::SetWindowLong(hDlg,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

回复
handsomerun 2005-08-13
::SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
回复
这是一个简单的对话框程序,把它集成到另一个程序中不费什么事
回复
coolstar14 2005-08-13
ShowWindow(SW_HIDE);
这样的话是不是连窗口都没有了?
回复
younggle 2005-08-13
把它隐藏起来就可以了啊:
ShowWindow(SW_HIDE);
回复
WoodJohn 2005-08-13
解决了,直接在对话框模板的属性中勾选Extended Style-->Tool Window,不用代码控制.
回复
WoodJohn 2005-08-13
handsomerun(毛毛),你的方法可以,但是显示出来的对话框跟以前不同了,没有立体感,而且被覆盖后重新出现不会重绘,这显然不太好
回复
WoodJohn 2005-08-13
谢谢大家,我试试先
各位帮我回一下以下这贴,每人回复我想结贴都不行,影响我信誉分啊
http://community.csdn.net/Expert/topic/4182/4182062.xml?temp=.0710718
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-13 10:14
社区公告
暂无公告