FalseBeing 2015-06-07 15:32 采纳率: 0%
浏览 1750

想用按钮叫出对话框,可是不知在哪里出了问题,我是刚入门,各位高人帮我看看,大谢了。

#include

#define ID_START 2

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("WBD");
MSG msg;
HWND hwnd;
WNDCLASS wndclass;

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 10;
wndclass.cbWndExtra = 20;
wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (NULL, szAppName);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;


if (!RegisterClass (&wndclass))
{
    MessageBox (NULL, TEXT ("Need NT"), szAppName, MB_ICONERROR);

    return 0;
}

hwnd = CreateWindow (szAppName, TEXT ("WBD"), 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;
static HWND hwndButton;
static RECT rect;
static int cxChar, cyChar;
HDC hdc;
PAINTSTRUCT ps;
static TCHAR szStart[] = TEXT ("Start");
switch (message)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
cxChar = LOWORD (GetDialogBaseUnits ());
cyChar = HIWORD (GetDialogBaseUnits ());

    hwndButton = CreateWindow (TEXT ("button"), szStart,
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        30 * cxChar, 30 * cyChar,
        20 * cxChar, 7 * cyChar / 4,
        hwnd, (HMENU)ID_START,
        ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    return 0;

case WM_SIZE:
    rect.left   = 24 * cxChar;
    rect.top    = 2 * cyChar;
    rect.right = LOWORD (lParam);
    rect.bottom = HIWORD (lParam);
    return 0;


case WM_PAINT:
    InvalidateRect (hwnd,&rect,TRUE);

    hdc = BeginPaint (hwnd, &ps);
    SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
    SetBkMode (hdc, TRANSPARENT);

    EndPaint (hwnd, &ps);
    return 0;


case WM_DRAWITEM:

case WM_COMMAND:
    switch (LOWORD (wParam))
    {
    case ID_START:
        DialogBox (hInstance, TEXT ("StartMenu"), hwnd, StartMenuProc);
        break;
    }
        return 0;


case WM_DESTROY:
    PostQuitMessage (0);
    return 0;
}
return DefWindowProc (hwnd, message, wParam, lParam);

}
BOOL CALLBACK StartMenuProc (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;

}

  • 写回答

4条回答

  • MSB4011 2015-06-07 15:39
    关注

    这段代码莫非是利物浦的教材?

    评论

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题