Ir para conteúdo
Fórum Script Brasil
  • 0

Programming Windows Fifth Edition


asantos38

Pergunta

Boa tarde a todos do fórum.

Estou começando a estudar programação para windows(GUI)  e tentei fazer um exemplo do livro do Charles Petzold, mas o programa não é compatível com o ambiente ou o compilador.Estou usando Code::Blocks, e o compilador é o gcc 4.2.4 para windows.

Alguém sabe em quais bibliotecas estão as funções min() e max() das linhas 69 e 70; e _beginthread() da linha 81?

Segue o código:

#include <windows.h>
#include <cstdlib>

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

HWND hwnd;
int cxClient, cyClient;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){

    static TCHAR szAppName[] = TEXT("RndRctMT");
    MSG msg;
    WNDCLASS wndclass;

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

    if(!RegisterClass(&wndclass)){
        MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);

        return 0;
    }

    hwnd = CreateWindow(szAppName, TEXT("Random Rectangles"),
                        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;
}

VOID Thread(PVOID pvoid){
    HBRUSH hBrush;
    HDC hdc;
    int xLeft, xRight, yTop, yBottom, iRed, iGreen, iBlue;

    while(TRUE){
        if(cxClient != 0 || cyClient != 0){
            xLeft       = rand() % cxClient;
            xRight      = rand() % cxClient;
            yTop        = rand() % cyClient;
            yBottom     = rand() % cyClient;
            iRed        = rand() % 255;
            iGreen      = rand() % 255;
            iBlue       = rand() % 255;

            hdc = GetDC(hwnd);
            hBrush = CreateSolidBrush(RGB(iRed, iGreen, iBlue));
            SelectObject(hdc, hBrush);

            Rectangle(hdc, min(xLeft, xRight), min(yTop, yBottom),
                           max(xLeft, xRight), max(yTop, yBottom));

            ReleaseDC(hwnd, hdc);
            DeleteObject(hBrush);
        }
    }
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
    switch(message){
        case WM_CREATE:
            _beginthread(Thread, 0, NULL);
            return 0;
        case WM_SIZE:
            cxClient    = LOWORD(lParam);
            cyClient    = HIWORD(lParam);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);

}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...