Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

José Enésio

[Resolvido] Erro "file not found" em aplication win32

Recommended Posts

Fala galera! :D

Hoje vou pedir uma ajuda aqui!

To fazendo umas paradas de classes aqui no Code::Blocks, é basicamente um "remake" de umas classes de janelas Win32 que eu tinha feito tempos atrás, só que agora com uma diferença: a tranqueira não funciona :P

Não sei o que to fazendo errado aqui, mas o CreateWindowEx retorna NULL, e ao adicionar uma função de verificar erros que eu achei na MSDN (copiei e colei também pra debugar essa bagaça), chamando essa função logo no início do programa, antes da instância da classe da janela, ou seja, a primeira instrução da função WinMain, ele me retorna o erro 2: O sistema não pôde encontrar o arquivo especificado.

Já to quebrando a cabeça com isso aqui, não sei o que eu faço pra essa coisa funcionar. Já esgotei todas as minhas ideias. Vou copiar e colar como está o arquivo principal:

#include "SimpWin/SimpWin.h"
#include <stdio.h>

//  Make the class name into a global variable
char szClassName[] = "WindowsApp";


void ErrorExit(LPTSTR lpszFunction)
{
    // Retrieve the system error message for the last-error code

    LPVOID lpMsgBuf;
    LPVOID lpDisplayBuf;
    DWORD dw = GetLastError();

    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );

    // Display the error message and exit the process

    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
        (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR));
    sprintf((char*)lpDisplayBuf,
        TEXT("%s failed with error %d: %s"),
        lpszFunction, (int)dw, (char*)lpMsgBuf);
    MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);

    LocalFree(lpMsgBuf);
    LocalFree(lpDisplayBuf);
    ExitProcess(dw);
}

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

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    ErrorExit(TEXT("LOL"));
    Window* win = Window::CreateWindowClass(hThisInstance, szClassName, WindowProcedure);
    if(!win->Register())
    {
        return 0;
    }


    win->Show(nFunsterStil);

    int res = win->HandleMessages();

    delete win;

    return res;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProc (hwnd, message, wParam, lParam);
}

Praticamente copypaste do template de win32 do dev-c++ hehe

 

Agradeço quem puder me ajudar \o

Se precisarem ver os códigos de algum dos métodos aí avisa... se eu for copiar tudo aqui vai ficar gigante demais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa galera! Consegui resolver a tranqueira aqui! hehe

Vou dividir essa parada aqui em dois posts, fica mais fácil pra quem estiver vendo, o post 1 tem o problema e o post 2 tem a solução...

O erro tava em outra classe String que eu tinha aqui, a função copy dela utilizada no operator= e outras coisas copiava a array de caracteres, mas não atualizava o campo length da classe (essa classe descendia da classe Array<char>), e na hora de converter para char*, retornava um char* com 0 elementos... e era justamente isso que acontecia no CreateWindowEx.

Arrumei e recompilei a outra biblioteca aqui, e recompilei esse código da janela, e agora funciona joinha (tirando uma cagada que eu fiz aqui, eu preciso me ligar que o hwnd retornado pelo CreateWindowEx e o que o WNDPROC recebe são diferentes... aparentemente).

 

Valeu pessoal :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.