笔记——《C语言也能干大事》之对话框程序代码

下面是对话框程序框架代码:
//
// resource.h
//
// 控件 ID.
//
#define IDD_MAIN                    100
#define IDC_OK                      101
#define IDC_CANCEL                  102
 
//
// main.h
//
#ifndef _MAIN_H
#define _MAIN_H
 
#include <windows.h>
 
//
// 自定义函数前置声明.
//
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void Main_OnClose(HWND hwnd);
<br>#endif
 
//
// dialogs.cpp
//
#include <commctrl.h><br>#include "main.h"
#include "resource.h"
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
{
    InitCommonControls();<br>    // 创建对话框.
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
    return 0;
}
 
 
//
// main.cpp
//
#include <windows.h>
#include <windowsx.h>
#include "main.h"
#include "resource.h"
 
//
// 主对话框过程.
//
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
        HANDLE_MSG(hWnd, WM_CLOSE, Main_OnClose);
    }
 
    return FALSE;
}
 
 
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{  
    //
    // Add initializing code here
    //
     
    return TRUE;
}
 
 
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
            MessageBox(hwnd,TEXT("You clicked OK!"),TEXT("test2"),MB_OK);
            EndDialog(hwnd, id);
        break;
        case IDC_CANCEL:
            MessageBox(hwnd,TEXT("You clicked Cancel!"),TEXT("test2"),MB_OK);
            EndDialog(hwnd, id);
        break;
        default:break;
    }
}
 
 
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
 
 
 
posted @   Atypiape  阅读(2468)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示