LccWin32下制作Dialog

步骤

经过半天的探索,参考VC下相同项目的源文件,我终于在LccWin32下做出带菜单、图标、系统菜单、最小/大化按钮的对话框(Dialog)了。具体步骤如下列各图所示,各图中具有焦点的按钮(Focused Button)即为每一步最后要点击的按钮。其中项目的目录等信息请大家根据自己的情况更改。

第一步

第二步

第三步

第四步

第五步

第六步

第七步

 

源代码

其中粗体部分为向导完成后,手工添加的代码。

DlgTestres.h

#define IDD_MAINDIALOG 100
#define IDMAINMENU 600
#define IDM_NEW 200
#define IDM_OPEN 210
#define IDM_EXIT 300
#define IDM_ABOUT 500
#define IDAPPLICON 710

DlgTest.rc

#ifdef __LCC__
#include <windows.h>
#endif
#include "dlgtestres.h"

 

IDAPPLICON ICON "D://Oscar//LccWin32//projects//dlgtest//app.ico"

 

IDMAINMENU MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "&New",IDM_NEW
        MENUITEM "&Open",IDM_OPEN
        MENUITEM "&E&xit",IDM_EXIT
    END
    POPUP "&Help"
    BEGIN
        MENUITEM "&About",IDM_ABOUT
    END
END

 

IDD_MAINDIALOG DIALOG 7, 20, 195, 86
STYLE DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "DlgTest"
MENU IDMAINMENU
FONT 8, "Helv"
BEGIN
    DEFPUSHBUTTON   "OK", IDOK, 149, 6, 40, 14
    PUSHBUTTON      "Cancel", IDCANCEL, 149, 23, 40, 14
END

DlgTest.c

#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <string.h>
#include "DlgTestres.h"

 

static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
HINSTANCE ghInst;

 

int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wc;
    INITCOMMONCONTROLSEX cc;

 

    memset(&wc,0,sizeof(wc));
    wc.lpfnWndProc = DefDlgProc;
    wc.cbWndExtra = DLGWINDOWEXTRA;
    wc.hInstance = hinst;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
    wc.lpszClassName = "DlgTest";
    RegisterClass(&wc);
    memset(&cc,0,sizeof(cc));
    cc.dwSize = sizeof(cc);
    cc.dwICC = 0xffffffff;
    InitCommonControlsEx(&cc);

 

    ghInst = hinst;

 

    return DialogBox(hinst, MAKEINTRESOURCE(IDD_MAINDIALOG), NULL, (DLGPROC) DialogFunc);
}

 

static int InitializeApp(HWND hDlg,WPARAM wParam, LPARAM lParam)
{
    HICON hIcon = LoadIcon(ghInst, MAKEINTRESOURCE(IDAPPLICON));
    SendMessage(hDlg, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)hIcon);
    SendMessage(hDlg, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)hIcon);
    return 1;
}

 

static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg) {
    case WM_INITDIALOG:
        InitializeApp(hwndDlg,wParam,lParam);
        return TRUE;
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case IDOK:
            EndDialog(hwndDlg,1);
            return 1;
        case IDCANCEL:
            EndDialog(hwndDlg,0);
            return 1;
        }
        break;
    case WM_CLOSE:
        EndDialog(hwndDlg,0);
        return TRUE;

 

    }
    return FALSE;
}

效果

从下面的效果图,大家可以看到,不仅对话框具有了系统菜单、普通菜单、最小/大化按钮、图标,而且在Windows中切换窗口时,切换栏显示的是对话框的大图标。两处图标再不是LccWin32默认编译进资源文件的那个朴素的图标了。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值