[求教]C++ 点击弹出窗口事件,该如何解决
[求教]C++ 点击弹出窗口事件
#include <windows.h>
#include "resource.h "
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
HWND hwnd;
HMENU hMenu;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "HelloWin ";
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, "注册窗口失败! ", "HelloWin ",0);
return 0;
}
hMenu = LoadMenu(hInstance,(LPCSTR)IDR_MENU1);
hwnd = CreateWindow( "HelloWin ",
"我的窗口 ",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
hMenu,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_LBUTTONDOWN:
MessageBox(NULL, "你好 ", "问候 ",0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
这是在WIN32 API下的一窗口 上面有个菜单栏 IDR_MENU1
我在 IDR_MENU1 上有一按键 我想做一点击该按键就弹出一对话框的事件该添加什么代码.上课听老师说的用MFC弄出来过..但在WIN32 API 下就不会了..请高手赐教..我是刚接触C++的..希望能讲的具体.谢谢
------解决方案--------------------
自己定一个消息,再回调里些处理就行啦
------解决方案--------------------
寫個消息處理函數
------解决方案--------------------
当按下按钮时,按钮会向窗口发送一个WM_COMMAND消息,消息的LOWORD(wParam)是按钮的ID号,HIWORD(wParam)是通知吗,你只要在WndProc处理WM+COMMAND消息就可以了.
详细情况可以看 <Windows程序设计>
------解决方案--------------------
对,定义一个消息,然后相应这个消息,就ok了。
可以搜一下自定义消息,很简单。
#include <windows.h>
#include "resource.h "
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
HWND hwnd;
HMENU hMenu;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "HelloWin ";
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, "注册窗口失败! ", "HelloWin ",0);
return 0;
}
hMenu = LoadMenu(hInstance,(LPCSTR)IDR_MENU1);
hwnd = CreateWindow( "HelloWin ",
"我的窗口 ",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
hMenu,
hInstance,
NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_LBUTTONDOWN:
MessageBox(NULL, "你好 ", "问候 ",0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
这是在WIN32 API下的一窗口 上面有个菜单栏 IDR_MENU1
我在 IDR_MENU1 上有一按键 我想做一点击该按键就弹出一对话框的事件该添加什么代码.上课听老师说的用MFC弄出来过..但在WIN32 API 下就不会了..请高手赐教..我是刚接触C++的..希望能讲的具体.谢谢
------解决方案--------------------
自己定一个消息,再回调里些处理就行啦
------解决方案--------------------
寫個消息處理函數
------解决方案--------------------
当按下按钮时,按钮会向窗口发送一个WM_COMMAND消息,消息的LOWORD(wParam)是按钮的ID号,HIWORD(wParam)是通知吗,你只要在WndProc处理WM+COMMAND消息就可以了.
详细情况可以看 <Windows程序设计>
------解决方案--------------------
对,定义一个消息,然后相应这个消息,就ok了。
可以搜一下自定义消息,很简单。