为什么两个不同的button ID码相同

lucky0218a 2017-02-16 09:48:30
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam , LPARAM lp)
{
switch(msg)
{
PAINTSTRUCT ps,ps1;
PTSTR pGlobal;
HDC hdc,hdct;
RECT rect,rec;
HFONT hFont,hFon;
HBRUSH hBrush;
case WM_CREATE:
{
id=GetWindowLong(but,GWL_ID);
id1=GetWindowLong(but1,GWL_ID);
but=CreateWindow
(TEXT("button"),"点名",
WS_BORDER|WS_EX_DLGMODALFRAME|WS_SIZEBOX|WS_CHILDWINDOW|WS_VISIBLE|BS_PUSHBUTTON,
325,325,
180,100,
hwnd,
LoadMenu(NULL,"M"),
((LPCREATESTRUCT)lp)->hInstance,
NULL);
but1=CreateWindow
(TEXT("button"),"自动点名",
WS_BORDER|WS_EX_DLGMODALFRAME|WS_SIZEBOX|WS_CHILDWINDOW|WS_VISIBLE|BS_PUSHBUTTON,
143,325,
180,100,
hwnd,
LoadMenu(NULL,"g"),
((LPCREATESTRUCT)lp)->hInstance,
NULL);
MessageBox(0,"请勿连续点击", 0, MB_OK);
SetWindowPos(but1,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
id=GetWindowLong(but,GWL_ID);
id1=GetWindowLong(but1,GWL_ID);
return 0;
}
case WM_TIMER:
{
if (ak)
{
KillTimer(hwnd,1) ;
EnableWindow(hwnd,true);
}
else
{
ma();
InvalidateRect(hwnd,NULL,true);
}
}
case WM_PAINT:
{
hBrush=CreateSolidBrush(RGB(0,191,255));
hdc=GetDC(hwnd);
hdc=BeginPaint(hwnd,&ps);
hFont=CreateFont(70,43,0,0,FW_BOLD,
false,true,false,
DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY,
FF_MODERN,"宋体");
SelectObject(hdc,hFont);
GetClientRect(hwnd, &rect);
FillRect(hdc,&rect,hBrush);
SetBkColor(hdc,RGB(255,215,0));
if (dh==1)
{
DrawText(hdc,temp,-1,&rect,
DT_SINGLELINE|DT_CENTER);
dh=0;}
else
DrawText(hdc,temp,-1,&rect,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint (hwnd, &ps);
return 0;
}
case WM_LBUTTONDOWN:
{
if(jp==4)
{
MessageBox(0,"暂无内容,请等待更新","暂无内容", MB_OK);
jp=0;
}
jp++;
return 0;
}
case WM_COMMAND:
{
wmId=LOWORD(wParam );
if(wmId==id)
{
ak=true;
for (int jb=1;jb<=100000;jb++)
p++;
ma();
InvalidateRect(hwnd,NULL,true);
SetTimer(hwnd,1,977, NULL);
EnableWindow(hwnd,false);
}
else
{
ak=false;
MessageBox(0,"暂无内容,请等待更新","暂无内容", MB_OK);
}
return 0;
}
case WM_KEYDOWN:
{if(wParam == VK_ESCAPE) //ESC键
DestroyWindow(hwnd);
return 0;}
case WM_SYSKEYDOWN:
{dh++;
MessageBox(0," bb","??/", MB_OK);
break;
return 0;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg,wParam , lp); //返回缺省消息函数
}
...全文
310 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2017-02-17
  • 打赏
  • 举报
回复
留意 CreateWindow 的 hMenu 参数 hMenu Handle to a menu, or specifies a child-window identifier depending on the window style. For an overlapped or pop-up window, hMenu identifies the menu to be used with the window; it can be NULL if the class menu is to be used. For a child window, hMenu specifies the child-window identifier, an integer value used by a dialog box control to notify its parent about events. The application determines the child-window identifier; it must be unique for all child windows with the same parent window. 用 IDM_XXXXXX
Pingo520 2017-02-17
  • 打赏
  • 举报
回复

你这里GWL_ID相同,获取的id是一样的,因为这个缘故?把另外一个GWL_ID改成GWL_ID1试试
schlafenhamster 2017-02-17
  • 打赏
  • 举报
回复

//
HWND CreateBT(HWND parentWnd,int x,int y,int wid,int hei,UINT ID)
{
	HWND hBt=0;
	char prompt[40];
	hBt = CreateWindow("BUTTON",
                NULL,
                WS_CHILD|WS_TABSTOP|WS_VISIBLE|BS_PUSHBUTTON|WS_SIZEBOX|WS_GROUP,
                x,y,wid,hei,//180, 340, 60, 30, 
                parentWnd, (HMENU)ID,//
                (HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE), 
                NULL);
	sprintf(prompt,"Bt-%d",ID);
	SetWindowText(hBt,prompt);
//
	return hBt;
}
注意 (HMENU)ID,就是控件ID 因为 按钮不会有 Menu 菜单
lucky0218a 2017-02-17
  • 打赏
  • 举报
回复
引用 4 楼 shen_wei 的回复:
LONG WINAPI GetWindowLongW( __in HWND hWnd, __in int nIndex); 第二个参数是重点。。。
那请问如何改第二个参数值呢?
shen_wei 2017-02-17
  • 打赏
  • 举报
回复
LONG WINAPI GetWindowLongW( __in HWND hWnd, __in int nIndex); 第二个参数是重点。。。
lucky0218a 2017-02-16
  • 打赏
  • 举报
回复
怎么让id1和id的值不相同? 我现在不管按下but 还是 but1,都执行if 下的内容,而不执行else下的内容。 大神求助!!!!!!!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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