VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 360|回复: 4

[交流] VC/MFC

[复制链接]
49_avatar_middle
最佳答案
0 
在线会员 发表于 2021-7-29 10:22:06 | 显示全部楼层 |阅读模式
#include <Windows.h>  

  
//按钮ID
#define IDB_ONE     3301  
#define IDB_TWO     3302  
#define IDB_THREE   3303  

//函数声明
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);  
  
LPCWSTR WINDOWS_CLASS = "MyClass";    //类名  
LPCWSTR WINDOWS_TITLE = "测试按钮";   //窗口标题  


int WINAPI wWinMain(HINSTANCE hThisApp,  
    HINSTANCE hPrevApp,  
    LPWSTR lpCmd,  
    int nShow)  
{  
    WNDCLASSEX wc = { };  
    wc.cbSize = sizeof(WNDCLASSEX);  
    wc.hbrBackground = (HBRUSH)COLOR_WINDOW;  
    wc.hInstance = hThisApp;  
    wc.lpfnWndProc = (WNDPROC)WindowProc;  
    wc.lpszClassName = WINDOWS_CLASS;  
    wc.style = CS_HREDRAW | CS_VREDRAW;  
    RegisterClassEx(&wc);  
   
   
    HWND hwnd = CreateWindowEx(WS_EX_WINDOWEDGE,  
                    WINDOWS_CLASS,  
                    WINDOWS_TITLE,  
                    WS_OVERLAPPEDWINDOW,  
                    20,  
                    25,  
                    400,  
                    300,  
                    NULL,  
                    NULL,  
                    hThisApp,  
                    NULL);  
    if (hwnd == NULL)  
    {
        return -1;
    }
         
    ShowWindow(hwnd, nShow);  
    UpdateWindow(hwnd);  

    MSG msg;  
    while(GetMessage(&msg,NULL,0,0))  
    {  
        TranslateMessage(&msg);  
        DispatchMessage(&msg);  
    }  
   
    return 0;  
}  
  
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  
{  
    switch(msg)  
    {  
    case WM_DESTROY:  
        PostQuitMessage(0);  
        return 0;  

    case WM_CREATE:  
        {  
            //创建三个按钮  
            CreateWindow(L"Button", L"按钮一", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,  
                35, 10, 160, 60, hwnd, (HMENU)IDB_ONE, hwnd, NULL);  
               
            CreateWindow(L"Button", L"按钮二", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,  
                35, 80, 160, 60, hwnd, (HMENU)IDB_TWO, hwnd, NULL);
                 
            CreateWindow(L"Button", L"按钮三", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,  
                35, 150, 160, 60, hwnd, (HMENU)IDB_THREE, hwnd, NULL);  
        }  
        return 0;
         
    case WM_COMMAND:  
        {  
            switch(LOWORD(wParam))  
            {  
            case IDB_ONE:  
                //MessageBox(hwnd, L"您点击了第一个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);  
                SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第一个按鈕已点击");  
                break;  
               
            case IDB_TWO:  
                //MessageBox(hwnd, L"您点击了第二个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);  
                SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第二个按鈕已点击");  
                break;  
               
            case IDB_THREE:  
                //MessageBox(hwnd, L"您点击了第三个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);  
                SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"第三个按鈕已点击");  
                break;  
               
            default:  
                break;  
            }  
        }  
        return 0;  
        
    default:  
        return DefWindowProc(hwnd,msg,wParam,lParam);  
    }  
   
    return 0;  
}  

LOWORD(wParam)出来的ID号为什么正好就等于
//按钮ID
#define IDB_ONE     3301  
#define IDB_TWO     3302  
#define IDB_THREE   3303  
这三个手动设置按钮ID号呢?系统怎么知道我设置的ID号是多少,就是ID号我可以自己设置,那么他为什么每次正好检测到我自己设置的ID呢




上一篇:多线程编程线程同步,Events同步
下一篇:C++报错:(ntdll.dll)处读取位置发生访问冲突
96_avatar_middle
最佳答案
0 
donate_vip 发表于 2021-7-29 13:32:45 | 显示全部楼层
你这些代码,哪些是你写的,哪些是微软写的呢。
31_avatar_middle
最佳答案
49 
在线会员 发表于 2021-7-30 16:37:44 来自手机 | 显示全部楼层
本帖最后由 cpp2019 于 2021-7-30 16:47 编辑

楼主这个问题问得有点儿傻,CreateWindow时就给了ID啊!
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-7-31 09:37:08 | 显示全部楼层
cpp2019 发表于 2021-7-30 16:37
楼主这个问题问得有点儿傻,CreateWindow时就给了ID啊!

是啊,后来才发现了,知道了,但是帖子发出去不知道怎么删
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-2 21:52:57 | 显示全部楼层
5465 发表于 2021-7-31 09:37
是啊,后来才发现了,知道了,但是帖子发出去不知道怎么删

CreateWindow(L"Button", L"按钮一", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,  
                35, 10, 160, 60, hwnd, (HMENU)IDB_ONE, hwnd, NULL);  
请问这个函数第一个参数为什么是L"Button"第一个参数不是注册类窗口名字吗?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-10-23 15:58

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表