XFC演示-使用C语言通过WinAPI函数编写Windows程序

XFC演示-使用C语言通过WinAPI函数编写Windows程序


1,目标效果:



2,代码片段:

winMain.c

/*!
    \file    winMain.c
    \version    v1.00
    \date    10/19/2014 20:26:19
*/
#define __WINMAIN_C__
/*********************************** START ************************************/

#include "all.h"



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
	HANDLE hAccel;
    MSG msg;
    HWND hwnd, hDlg;
	DWORD dwStyle;

    dwStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | 640;
	
    hwnd = XFC_MainFrame_Create(hInstance, IDR_MAINFRAME, dwStyle, XFC_MESSAGE_MAP(frameMain));
    if (!hwnd)
    {
        return 0;
    }

	hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
	InitCommonControls();

#if 1
    hDlg = XFC_FormView_Create(hInstance, IDD_FORMVIEW, hwnd, XFC_MESSAGE_MAP(formView));
    if (!hDlg)
    {
        return 0;
    }
    ShowWindow(hDlg, SW_SHOW);    
	UpdateWindow(hDlg);
#endif

    ShowWindow(hwnd, SW_SHOW);    
	UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0))
    {
		if (!TranslateAccelerator(msg.hwnd, hAccel, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
    }
    return msg.wParam;
}





/************************************ END *************************************/
#undef __WINMAIN_C__

frameMain.c

/*!
    \file    frameMain.c
    \version    v1.00
    \date    10/19/2014 20:26:30
*/
#define __FRAMEMAIN_C__
/*********************************** START ************************************/

#include "all.h"

LRESULT CALLBACK frameMain_On_WM_CREATE(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    //HInstance = ((LPCREATESTRUCT)lParam)->hInstance;
    return 0;
}

LRESULT CALLBACK frameMain_On_WM_COMMAND(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (LOWORD(wParam))
    {
    case ID_APP_EXIT:
        SendMessage(hwnd, WM_CLOSE, 0, 0);
        return 0;

    case ID_APP_ABOUT:
		XFC_Dialog_Create(_hInstance, IDD_ABOUTBOX, hwnd, XFC_MESSAGE_MAP(dlgAbout));
        return 0;
    }
    return 0;
}

LRESULT CALLBACK frameMain_On_WM_PAINT(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    BeginPaint(hwnd, &ps);

    EndPaint(hwnd, &ps);
    return 0;
}
LRESULT CALLBACK frameMain_On_WM_CLOSE(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    DestroyWindow(hwnd);
    return 0;
}
LRESULT CALLBACK frameMain_On_WM_DESTROY(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PostQuitMessage(0);
    return 0;
}
LRESULT CALLBACK frameMain_On_WM_ERASEBKGND(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    return TRUE;
}


BEGIN_XFC_MESSAGE_MAP(frameMain)

ON_XFC_MESSAGEF(WM_CREATE,		frameMain_On_WM_CREATE)
ON_XFC_MESSAGEF(WM_COMMAND,		frameMain_On_WM_COMMAND)
ON_XFC_MESSAGEF(WM_PAINT,		frameMain_On_WM_PAINT)
ON_XFC_MESSAGEF(WM_CLOSE,		frameMain_On_WM_CLOSE)
ON_XFC_MESSAGEF(WM_DESTROY,		frameMain_On_WM_DESTROY)
ON_XFC_MESSAGEF(WM_ERASEBKGND,	frameMain_On_WM_ERASEBKGND)

END_XFC_MESSAGE_MAP()

/************************************ END *************************************/
#undef __FRAMEMAIN_C__

formView.c

<pre name="code" class="cpp"><pre name="code" class="cpp">/*!
    \file    formView.c
    \version    v1.00
    \date    10/19/2014 20:26:37
*/
#define __FORMVIEW_C__
/*********************************** START ************************************/
#define __XFC_PRINT__
#include "all.h"

LRESULT CALLBACK formView_On_IDC_LIST1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int nNotifyCode = HIWORD(wParam);

    switch (nNotifyCode)
    {
    case LBN_SELCHANGE:
    {
        HWND hwndComboBox = GetDlgItem(hwnd, IDC_LIST1);
        int index = XFC_ListBox_GetCurSel(hwndComboBox);

        XFC_ListBox_GetText(hwndComboBox, index, _szBuffer);
        XFC_Window_SetString(GetDlgItem(hwnd, IDC_EDIT_ListBox), _szBuffer);

        XFC_PRINT4("IDC_LIST1::LBN_SELCHANGE:%08X, %d, %d, %08X", hwnd, message, wParam, lParam);
        return TRUE;
    }
    case LBN_DBLCLK:
    {
        MessageBox(hwnd, TEXT("LBN_DBLCLK"), TEXT("formView_On_IDC_LIST1"), MB_OK);
        return TRUE;
    }
    }
    return 0;
}

LRESULT CALLBACK formView_On_IDC_COMBO1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int nNotifyCode = HIWORD(wParam);

    switch (nNotifyCode)
    {
    case CBN_SELCHANGE:
    {
        HWND hwndComboBox = GetDlgItem(hwnd, IDC_COMBO1);
        int index = XFC_ComboBox_GetCurSel(hwndComboBox);

        XFC_ComboBox_GetLBText(hwndComboBox, index, _szBuffer);
        XFC_Window_SetString(GetDlgItem(hwnd, IDC_STATIC_ComboBox), _szBuffer);

        XFC_PRINT4("IDC_COMBO1::CBN_SELCHANGE:%08X, %d, %d, %08X", hwnd, message, wParam, lParam);
        return TRUE;
    }
    }

    return 0;
}

LRESULT CALLBACK formView_On_WM_TIMER(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (wParam)
    {
    case IDC_PROGRESS1:
    {
        XFC_Progress_StepIt(GetDlgItem(hwnd, IDC_PROGRESS1));

        break;
    }
    default:

        break;
    }


    return 0;
}

LRESULT CALLBACK formView_On_WM_INITDIALOG(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    XFC_Edit_SetInt(GetDlgItem(hwnd, IDC_EDIT1), 100);
    XFC_Edit_SetInt(GetDlgItem(hwnd, IDC_EDIT2), 200);
    XFC_Edit_SetInt(GetDlgItem(hwnd, IDC_EDIT3), 0);

    XFC_Check_SetInt(GetDlgItem(hwnd, IDC_CHECK1), 1);
    XFC_Check_SetInt(GetDlgItem(hwnd, IDC_CHECK2), 1);
    XFC_Check_SetInt(GetDlgItem(hwnd, IDC_CHECK3), 1);

    XFC_Radio_SetIntByID(hwnd, IDC_RADIO0, 6/*(IDC_RADIO6-IDC_RADIO0)*/, 0);

    XFC_Edit_SetString(GetDlgItem(hwnd, IDC_EDIT_ListBox), TEXT("中文字符串 - Englsh String"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_ResetContent"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_AddString"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_GetCurSel"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_SetCurSel"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_DeleteString"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_GetText"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_GetTextLen"));
    XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), TEXT("XFC_ListBox_GetCount"));
    XFC_ListBox_SetCurSel(GetDlgItem(hwnd, IDC_LIST1), 0);

    XFC_Window_SetString(GetDlgItem(hwnd, IDC_STATIC_ComboBox), TEXT("中文字符串 - Englsh String"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_ResetContent"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_AddString"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_GetCurSel"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_SetCurSel"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_DeleteString"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_GetLBText"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_GetLBTextLen"));
    XFC_ComboBox_AddString(GetDlgItem(hwnd, IDC_COMBO1), TEXT("XFC_ComboBox_GetCount"));
    XFC_ComboBox_SetCurSel(GetDlgItem(hwnd, IDC_COMBO1), 0);
    return 0;
}

LRESULT CALLBACK formView_On_WM_COMMAND(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int nID         = LOWORD(wParam);

    static TCHAR szFileName[MAX_PATH];
    static TCHAR szTitleName[MAX_PATH];
    static TCHAR szFilter[] = TEXT("Text Files (*.TXT)\0*.txt\0")  \
                              TEXT("All Files (*.*)\0*.*\0\0") ;

    static TCHAR szFolderName[MAX_PATH];
    switch (nID)
    {
    case IDC_BUTTON_Calculate:
    {
        int i1, i2, i3;

        i1 = XFC_Edit_GetInt(GetDlgItem(hwnd, IDC_EDIT1));
        XFC_PRINT1("%d", i1);

        i2 = XFC_Edit_GetInt(GetDlgItem(hwnd, IDC_EDIT2));
        XFC_PRINT1("%d", i2);

        i3 = i1 + i2;
        XFC_Edit_SetInt(GetDlgItem(hwnd, IDC_EDIT3), i3);
        XFC_PRINT1("%d", i3);

        return TRUE;
    }
    case IDC_BUTTON_Start:
    {
        static BOOL flag = FALSE;
        HWND hwndProgress = GetDlgItem(hwnd, IDC_PROGRESS1);
        XFC_Progress_SetRange32(hwndProgress, 0, 100);
        XFD_Progress_SetStep(hwndProgress, 10);

        XFC_Progress_SetPos(hwndProgress, 0);
        if (!flag)
        {
            SetTimer(hwnd, IDC_PROGRESS1, 300, NULL);
            flag = TRUE;

            XFC_Window_SetString(GetDlgItem(hwnd, IDC_BUTTON_Start), TEXT("停止"));
        }
        else
        {
            KillTimer(hwnd, IDC_PROGRESS1);
            flag = FALSE;

            XFC_Window_SetString(GetDlgItem(hwnd, IDC_BUTTON_Start), TEXT("开始"));
        }
        return TRUE;
    }
    case IDC_BUTTON_Count:
    {
        int i;
        TCHAR szTemp[MAX_BUFFERSTRING] = "";
        i = XFC_Radio_GetIntByID(hwnd, IDC_RADIO0, (IDC_RADIO6 - IDC_RADIO0));
        XFC_Window_GetString(GetDlgItem(hwnd, (IDC_RADIO0 + i)));

        lstrcat(szTemp, _szBuffer);
        lstrcat(szTemp, TEXT(": "));

        for (i = IDC_CHECK1; i <= IDC_CHECK5; i++)
        {
            if (XFC_Check_GetInt(GetDlgItem(hwnd, i)))
            {
                lstrcat(szTemp, XFC_Window_GetString(GetDlgItem(hwnd, i)));
                lstrcat(szTemp, TEXT(", "));
            }
        }

        XFC_Edit_SetString(GetDlgItem(hwnd, IDC_EDIT_Result), szTemp);

        return TRUE;
    }

    case IDC_BUTTON_Open:
    {
        XFC_PopFileInitialize(hwnd, NULL, szFilter);
        XFC_PopFileOpenDlg(hwnd, szFileName, szTitleName);

        XFC_Edit_SetString(GetDlgItem(hwnd, IDC_EDIT_FilePath), szFileName);
        return TRUE;
    }
    case IDC_BUTTON_Save:
    {
        XFC_PopFileInitialize(hwnd, NULL, szFilter);
        XFC_PopFileSaveDlg(hwnd, szFileName, szTitleName);

        XFC_Edit_SetString(GetDlgItem(hwnd, IDC_EDIT_FilePath), szFileName);
        return TRUE;
    }
    case IDC_BUTTON_Browse:
    {
        XFC_PopFolderInitialize(hwnd, NULL, TEXT("请选择一个目录"));
        XFC_PopFolderOpenDlg(hwnd, szFolderName, szTitleName);

        XFC_Edit_SetString(GetDlgItem(hwnd, IDC_EDIT_FolderPath), szFolderName);
        return TRUE;
    }
    case IDC_BUTTON_Add:
    {
        int count;
        XFC_Edit_GetString(GetDlgItem(hwnd, IDC_EDIT_ListBox));
        XFC_ListBox_AddString(GetDlgItem(hwnd, IDC_LIST1), _szBuffer);
        count = XFC_ListBox_GetCount(GetDlgItem(hwnd, IDC_LIST1));

        XFC_ListBox_SetCurSel(GetDlgItem(hwnd, IDC_LIST1), count - 1);
        return TRUE;
    }
    case IDC_BUTTON_Del:
    {
        int index;
        index = XFC_ListBox_GetCurSel(GetDlgItem(hwnd, IDC_LIST1));
        if (index != LB_ERR)
        {
            XFC_ListBox_DeleteString((GetDlgItem(hwnd, IDC_LIST1)), index);
        }
        return TRUE;
    }
    case IDC_BUTTON_Clear:
    {
        XFC_ListBox_ResetContent((GetDlgItem(hwnd, IDC_LIST1)));
        return TRUE;
    }
    case IDC_COMBO1:
    {
        return formView_On_IDC_COMBO1(hwnd, message, wParam, lParam);
    }
    case IDC_LIST1:
    {
        return formView_On_IDC_LIST1(hwnd, message, wParam, lParam);
    }

    }
    return FALSE;
}

BEGIN_XFC_MESSAGE_MAP(formView)

ON_XFC_MESSAGEF(WM_INITDIALOG, formView_On_WM_INITDIALOG)
ON_XFC_MESSAGEF(WM_COMMAND, formView_On_WM_COMMAND)
ON_XFC_MESSAGEF(WM_TIMER, formView_On_WM_TIMER)


END_XFC_MESSAGE_MAP()





/************************************ END *************************************/
#undef __FORMVIEW_C__


 
 
 
dlgAbout.c 

/*!
    \file    dlgAbout.c
    \version    v1.00
    \date    10/19/2014 20:26:51
*/
#define __DLGABOUT_C__
/*********************************** START ************************************/

#include "all.h"


LRESULT CALLBACK dlgAbout_On_WM_INITDIALOG(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

    return 0;
}

LRESULT CALLBACK dlgAbout_On_WM_COMMAND(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (LOWORD(wParam))
    {
    case IDOK:
        EndDialog(hwnd, TRUE);
        return TRUE;

    case IDCANCEL:
        EndDialog(hwnd, FALSE);
        return TRUE;
    }
    return 0;
}

BEGIN_XFC_MESSAGE_MAP(dlgAbout)

ON_XFC_MESSAGEF(WM_INITDIALOG, dlgAbout_On_WM_INITDIALOG)
ON_XFC_MESSAGEF(WM_COMMAND, dlgAbout_On_WM_COMMAND)

END_XFC_MESSAGE_MAP()


/************************************ END *************************************/
#undef __DLGABOUT_C__


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值