BOOL __stdcall DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG: // 初始化对话框
::SetWindowText(hDlg,"第一个对话框!");
HWND hhpro;
hhpro=::GetDlgItem(hDlg,IDC_PRO1);
::SendMessage(hhpro,PBM_SETRANGE,0,MAKELPARAM(0,20));
::SendMessage(hhpro,PBM_SETSTEP,1,0);
::SendMessage(hhpro,PBM_SETBKCOLOR,0,RGB(0,0,0xff));
::SendMessage(hhpro,PBM_SETBARCOLOR,0,RGB(0xff,0,0));
HMENU hSysMenu;
hSysMenu = ::GetSystemMenu(hDlg, FALSE);
::AppendMenu(hSysMenu, MF_SEPARATOR, 0, NULL);
::AppendMenu(hSysMenu, MF_STRING, IDM_TOPMOST, "总在最前");
break;
case WM_CONTEXTMENU:
POINT pt; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam);
{
// 取得系统菜单的句柄
HMENU hSysMenu = ::GetSystemMenu(hDlg, FALSE);
// 弹出系统菜单
int nID = ::TrackPopupMenu(hSysMenu,TPM_LEFTALIGN|TPM_RETURNCMD,
pt.x, pt.y, 0, hDlg, NULL);
if(nID > 0)
::SendMessage(hDlg, WM_SYSCOMMAND, nID, 0); //注意第二个参数
break;
}
case WM_SYSCOMMAND:
switch(LOWORD(wParam))
{
case IDM_TOPMOST:
::MessageBox(NULL,"top most now22222222","cap",MB_OK); //第一个地方响应菜单
break;
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_TOPMOST:
::MessageBox(NULL,"top most now","cap",MB_OK); //第二个地方响应菜单
break;
}
如果上面的::SendMessage的第二个参数为WM_SYSCOMMAND,那么下面响应自己添加的菜单的地方因该为第一个响应菜单的地方
如果上面的:SendMessage的第二个参数为WM_COMMAND,那么下面的响应自己添加的菜单的地方应该为第二个响应菜单的地方,但是这个时候默认的菜单就会没有用了,这个时候只能响应自己编写的菜单