c语言编一个dll 用message box 弹出一个对话框,一、Windows对话框—建立「About」对话框...

Windows程序即使不需要接收使用者输入,也通常具有由菜单上的「About」选项启动的对话框,该对话框用来显示程序的名字、图标、版权旗标和标记为「OK」的按键,也许还会有其它信息(例如技术支持的电话号码)。我们将要看到的第一个程序除了显示一个「About」对话框外,别无它用。这个ABOUT1程序如程序11-1所示:

程序11-1 ABOUT1

ABOUT1.C

/*------------------------------------------------------------------------

ABOUT1.C -- About Box Demo Program No. 1

(c) Charles Petzold, 1998

-------------------------------------------------------------------------*/

#include

#include "resource.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

BOOL CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("About1") ;

MSG msg ;

HWND hwnd ;

WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (hInstance, szAppName) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuName = szAppName ;

wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))

{

MessageBox (NULL, TEXT ("This program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}

hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, iCmdShow) ;

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)

{

static HINSTANCE hInstance ;

switch (message)

{

case WM_CREATE :

hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;

return 0 ;

case WM_COMMAND :

switch (LOWORD (wParam))

{

case IDM_APP_ABOUT :

DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;

break ;

}

return 0 ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_INITDIALOG :

return TRUE ;

case WM_COMMAND :

switch (LOWORD (wParam))

{

case IDOK :

case IDCANCEL :

EndDialog (hDlg, 0) ;

return TRUE ;

}

break ;

}

return FALSE ;

}

ABOUT1.RC (摘录)

//Microsoft Developer Studio generated resource script.

#include "resource.h"

#include "afxres.h"

/

// Dialog

ABOUTBOX DIALOG DISCARDABLE 32, 32, 180, 100

STYLE DS_MODALFRAME | WS_POPUP

FONT 8, "MS Sans Serif"

BEGIN

DEFPUSHBUTTON "OK",IDOK,66,80,50,14

ICON "ABOUT1",IDC_STATIC,7,7,21,20

CTEXT "About1",IDC_STATIC,40,12,100,8

CTEXT "About Box Demo Program",IDC_STATIC,7,40,166,8

CTEXT "(c) Charles Petzold,

1998",IDC_STATIC,7,52,166,8

END

/

// Menu

ABOUT1 MENU DISCARDABLE

BEGIN

POPUP "&Help"

BEGIN

MENUITEM "&About About1...", IDM_APP_ABOUT

END

END

/

// Icon

ABOUT1 ICON DISCARDABLE "About1.ico"

RESOURCE.H (摘录)

// Microsoft Developer Studio generated include file.

// Used by About1.rc

#define IDM_APP_ABOUT 40001

#define IDC_STATIC -1

ABOUT1.ICO

357c60344226435ecd0199c5eb93d873.png

藉由后面章节中介绍的方法,您还可以在程序中建立图标和菜单。图示和菜单的ID名均为「About1」。菜单有一个选项,它产生一条ID名为IDM_APP_ABOUT的WM_COMMAND消息。这使得程序显示的图11-1所示的对话框。

da6d32e0b93a2ddaa46d00c115265ec0.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值