VC Win32(不要MFC)怎么创建按钮和响应消息
我试着这样hButton=CreateWindowEx(NULL,L"button",NULL,WS_POPUP|WS_VISIBLE|WS_CHILD,0,0,100,...
我试着这样
hButton =CreateWindowEx(NULL,L"button",NULL,WS_POPUP | WS_VISIBLE|WS_CHILD,0,0,100,20,hWnd,NULL,NULL,NULL);
然后出来一个按钮,不过不在hWnd标示的窗体内
还有怎么响应消息。
Msdn只讲了有什么消息= =太不负责任了
对了我没有ShowWindow按钮就出现了,求解释 展开
hButton =CreateWindowEx(NULL,L"button",NULL,WS_POPUP | WS_VISIBLE|WS_CHILD,0,0,100,20,hWnd,NULL,NULL,NULL);
然后出来一个按钮,不过不在hWnd标示的窗体内
还有怎么响应消息。
Msdn只讲了有什么消息= =太不负责任了
对了我没有ShowWindow按钮就出现了,求解释 展开
4个回答
展开全部
插入对话框资源啊,用对话框资源简单。
//添加资源文件://添加一个标识符为IDD_DIALOG(对话框)的对话框,center属性设置为TRUE
//对话框上添加两个按钮,IDC_BUTTON_NOTE(提示)和IDC_BUTTON_EXIT(退出)
#include <Windows.h>#include "resource.h"//资源文件,系统自动添加对话框上各个标识符的值,用户不要编辑
//声明对话框处理函数DialogProc函数,extern也可以不要//对话框处理函数参数:窗口句柄,消息号,宽参数,长参数
//返回值:BOOL
//函数名称随意
//CALLBACK是函数修饰符,相当于__stdcall
extern BOOL CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
HWND hwnd;
MSG msg;
//创建对话框CreateDialog函数
//参数 1:实例句柄
//参数 2:对话框资源字符串形式标识符
//参数 3:父窗口句柄
//参数 4:对话框消息处理函数
hwnd=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,DialogProc);
//显示窗口ShowWindow函数 //参数 1:窗口句柄
//参数 2:显示样式
ShowWindow(hwnd,nShowCmd);
//主消息循环 while (GetMessage(&msg,hwnd,0,0))//GetMessage函数,获取窗口消息,第一个参数是MSG结构指针,第二个参数窗口句柄
{
//DispatchMessage函数,将消息交给处理程序处理
DispatchMessage(&msg);
}
return msg.wParam;
}
BOOL CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
switch (uMsg)
{
case WM_COMMAND://按钮或菜单命令按下时收到这个消息
switch(LOWORD(wParam))//wParam的低字节是所按下按钮的标识符
{
case IDC_BUTTON_NOTE:
MessageBox(NULL,TEXT("您点击了按钮!"),TEXT("提示"),MB_OK);
break;
case IDC_BUTTON_EXIT:
DestroyWindow(hWnd);
break;
}
break;
case WM_CLOSE://点击右上角关闭按钮收到这个消息
DestroyWindow(hWnd);
break;
case WM_DESTROY://销毁窗口时收到这个消息
PostQuitMessage(0);//让GetMessage返回0,结束循环,退出程序
}
return FALSE;//如果你不希望系统默认处理,返回TRUE
}
/*显示样式:SW_HIDE 隐藏窗口
SW_SHOWMINIMIZED 最小化显示
SW_SHOWMAXIMIZED 最大化显示
SW_SHOW 显示窗口
*/
//添加资源文件://添加一个标识符为IDD_DIALOG(对话框)的对话框,center属性设置为TRUE
//对话框上添加两个按钮,IDC_BUTTON_NOTE(提示)和IDC_BUTTON_EXIT(退出)
#include <Windows.h>#include "resource.h"//资源文件,系统自动添加对话框上各个标识符的值,用户不要编辑
//声明对话框处理函数DialogProc函数,extern也可以不要//对话框处理函数参数:窗口句柄,消息号,宽参数,长参数
//返回值:BOOL
//函数名称随意
//CALLBACK是函数修饰符,相当于__stdcall
extern BOOL CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
HWND hwnd;
MSG msg;
//创建对话框CreateDialog函数
//参数 1:实例句柄
//参数 2:对话框资源字符串形式标识符
//参数 3:父窗口句柄
//参数 4:对话框消息处理函数
hwnd=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,DialogProc);
//显示窗口ShowWindow函数 //参数 1:窗口句柄
//参数 2:显示样式
ShowWindow(hwnd,nShowCmd);
//主消息循环 while (GetMessage(&msg,hwnd,0,0))//GetMessage函数,获取窗口消息,第一个参数是MSG结构指针,第二个参数窗口句柄
{
//DispatchMessage函数,将消息交给处理程序处理
DispatchMessage(&msg);
}
return msg.wParam;
}
BOOL CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
switch (uMsg)
{
case WM_COMMAND://按钮或菜单命令按下时收到这个消息
switch(LOWORD(wParam))//wParam的低字节是所按下按钮的标识符
{
case IDC_BUTTON_NOTE:
MessageBox(NULL,TEXT("您点击了按钮!"),TEXT("提示"),MB_OK);
break;
case IDC_BUTTON_EXIT:
DestroyWindow(hWnd);
break;
}
break;
case WM_CLOSE://点击右上角关闭按钮收到这个消息
DestroyWindow(hWnd);
break;
case WM_DESTROY://销毁窗口时收到这个消息
PostQuitMessage(0);//让GetMessage返回0,结束循环,退出程序
}
return FALSE;//如果你不希望系统默认处理,返回TRUE
}
/*显示样式:SW_HIDE 隐藏窗口
SW_SHOWMINIMIZED 最小化显示
SW_SHOWMAXIMIZED 最大化显示
SW_SHOW 显示窗口
*/
参考资料: tengge Windows编程教程
展开全部
在按钮的父窗体的WindowProc中处理WM_COMMAND消息,消息的LOWORD(wParam)是控件的ID,通过判断控件的ID为不同的按钮指定不同的响应方式。
参考资料: http://msdn.microsoft.com/en-us/library/ms647591(VS.85).aspx
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LOWORD(wParam参数)的按钮,在父窗体的WindowProc处理WM_COMMAND消息,该消息是ID的控制,确定控制的ID来指定一个不同的反应,不同的按钮。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MFC不是再好吗?写的程序小是大了点,但是开发速度快啊,你见谁写个程序还用纯SDK,API来写?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询