Resolvido: Como Corrigir A Caixa De Diálogo De Compilação Do Win32 Sem Arquivo De Recurso

Quando seu computador está funcionando mal, este software irá corrigi-lo e proteger seus dados.

Se você tiver uma caixa de diálogo de criação do Win32 sem um arquivo de recurso para o seu PC, este guia ajudará.

Se você deseja apenas exibir uma janela de seleção ao lado dos controles, você pode criar uma tela sem usar arquivos de aplicativos / roteiros (.rc).

Este não é um diálogo específico relacionado, mas pode ser muito mais fácil do que criar um diálogo de melhoria completo.

Primeiro, alguns comentários:

  • win32 produzir diálogo sem arquivo de recurso

    Em vez de projetar um diálogo genérico em cada arquivo rc, sua empresa pode usar CreateWindow (ou CreateWindowEx ) para ajudá-lo a obter cada janela principal enquanto cria ajuda para janelas filhas … (para programadores de .NET Windows Forms, essas janelas já são como controles ).

  • Esses passos não serão gráficos quando a compra passar por todos eles (neste momento você precisa especificar a localização e também o nível da janela em todos os sites), mas vejo que isso pode ser seu grande estratégia para entender como a maioria dos diálogos fala sobre o capô.

  • Precisa corrigir erros do Windows? Reimage pode ajudar

    O seu computador está lento e lento? Você está recebendo a temida Tela Azul da Morte? Então é hora de baixar o Restoro! Este software revolucionário reparará todos os erros comuns do Windows, protegerá seus arquivos contra perda ou corrupção e manterá seu hardware funcionando de maneira ideal. Então, o que você está esperando? Baixe o Restoro agora!

  • 1. Baixe e instale o software Reimage
  • 2. Abra o software e clique em "Verificar problemas"
  • 3. Clique em "Reparar tudo" para iniciar o processo de reparo

Existem vários problemas, quando sua organização não está usando o chat real, principalmente: ao alternar entre os controles, as tarefas na verdade não são exibidas.


Sobre este exemplo:

  • Este exemplo tem uma importante caixa de diálogo com dois botões, uma única caixa de edição (os engenheiros de software .NET Windows Forms acham que ela será criada na função de um TextBox ) e cada uma delas.
  • versão x86
  • transcrição x64
  • Criar Unicode, bem como (definido por unicode _UNICODE )
  • construir não-Unicode além disso ( unicode _UNICODE indefinido)
  • Criado com o compilador Visual Studio C
  • Criado com isso este Compilador Visual Studio C++
  • Sistema operacional: Windows 10 de 64 bits

Observação: UNICODE

  • No momento da redação deste artigo, o UTF-8 continua na versão beta apenas para o Windows dez.
    • Se você não incluiu esse parâmetro de elemento específico, deve assumir que cada char * também é ACP e não UTF-8. Isso também se aplica a funções de biblioteca padrão.
    • Embora no Linux a mesma função de biblioteca forte seja UTF-8.
    • Infelizmente para alguns, a Biblioteca Padrão C++ oferece apenas tarefas agora com char * (por exemplo, mensagens de exceção).
    • Você também pode utilizar UTF-8 no Windows sem definir o parâmetro, você basicamente precisa escrevê-lo em termos UTF-16 antes de ligar para as funções do winapi.
    • Aqui está quase certamente sem dúvida um tópico do Reddit do qual alguém afirma que deseja executar com UTF-8 no Windows. Esta dada situação contém informações úteis.
  • UNICODE no assunto do Windows “UTF-16” não supõe “UTF-8”.
  • Qualquer tipo de Unicode é, sem dúvida, altamente recomendado para todos os estilos do Windows que não são mais fantasticamente antigos.
    • Observe que, se você não estiver usando Unicode, seu treinamento possivelmente não poderá salvar nomes de histórico com caracteres Unicode, diretórios de envio (como nomes de usuário) com unidades. PCA e muitos outros.
    • Usar funções ACP ( SendMessageA , etc.) sem verificar explicitamente se a maioria do UTF-8 é permitida (desativada e também padrão) é provavelmente o último bug.
    • Para máxima portabilidade / flexibilidade, eu usaria a renderização de todos os serviços de API em UTF-16 e W e interpretaria mal de UTF-8 para UTF-16 geralmente no último minuto. Por favor, leia esta história com atenção.

Agora para o código:

Qual ​​é normalmente o ID do recurso de diálogo?

A instrução descreve as configurações e tamanhos do gráfico de diálogo na tela, bem como o estilo da caixa de diálogo real. DIALOG é provável para que você seja um identificador de recurso obsoleto. Novos aplicativos devem usar DIALOGEX.

win32 cria caixa de diálogo sem arquivo útil

Preste atenção ao significado deste item Muitos comentários foram feitos enquanto você tentava documentar a funcionalidade do Windows. Eu recomendo copiá-los / colá-los rapidamente em um editor de texto para obter resultados vantajosos.

  // Este tipo funciona com ou sem UNICODE, como fica// Agora é recomendado no mercado usar UNICODE para todo novo valor, mas não estou// A capacidade ANSI está presente apenas no momento para obter o máximo possível// compatibilidade.//// Note que UNICODE junto com _UNICODE andam juntos, o pior// A API do Windows usa _UNICODE e alguns usam UNICODE.//// tchar.h, por exemplo, para tirar vantagem abrangente de _UNICODE e windows.h// muito bom usar UNICODE.Defina #UNICODE#define_UNICODE// número undef UNICODE// # undef_UNICODE#include #include // Criei nossa estrutura para que o conceito seja mais conveniente para salvá-los// Posições/tamanhos de cada para-brisa na caixa de diálogoestrutura typedef SizeAndPos_s    inteiro x, l, distância, altura; TamanhoAndPos_t;// Geralmente isso é sempre #defines, mas há// completamente nenhuma razão para não tornar esses itens constantesconst MOT ID_btnHELLO = 1;const WORD ID_btnQUIT é 2;const MOT ID_CheckBox é igual a 3;const MOT ID_txtEdit = 4;const WORD ID_btnShow corresponde a 5;// x, y, largura, alturaconst SizeAndPos_t mainWindow = um,150, 300, 290;const SizeAndPos_t btnHello = 29, 50, 81, 25;const SizeAndPos_t btnQuit corresponde a 120, como m, 80, 24;const SizeAndPos_t chkCheck = mulheres de 90, 185, 35;const SizeAndPos_t txtEdit corresponde a 20, 150, 130, 20;const SizeAndPos_t btnShow corresponde a 180, 150, 80, cerca de cinco;HWND txtEditHandle = NULL;// hwnd: praticamente todos os processos de janela geralmente passam em um bom identificador sólido para a nova janela// entendendo que você é positivo em apenas hwnd.// msg: a mensagem atual (no caso, WM_ *) recebida pelo sistema gerenciador.// wParam: O primeiro parâmetro de toda a mensagem pessoal, note que nesse aspecto existe mais ou menos uma quantidade significativa dela// inteiros, infelizmente, são "blocos de dados" mais eficazes que// Você e sua família precisam armazenar informações brutas de marketing para acomodar dados etc.// lParam: próximo parâmetro da mensagem, mesma técnica acima.LRESULT CALLBACK WndProc (HWND hwnd, UINT MSG, WPARAM wParam, LParam) interruptor lparam (msg)     WS_CHILD, btnQuit.x, btnQuit.y, btnQuit.width, btnQuit.height, hwnd, (HMENU) ID_btnQUIT, NULL, NULL);        // Cria uma caixa de seleção        // ------------------------------------------------ -------------------------------------------------- -------------------------------------------------- --------------------------------------------------        CreateWindow (TEXT ("botão"), TEXT ("CheckBox"), WS_VISIBLE    return DefWindowProc (hwnd, msg, wParam, lParam);// hInstance: Este handle descreve toto para o executável que é essencialmente executado// hPreviousInstance: não adquirido. Consulte https://blogs.msdn.microsoft.com/oldnewthing/20040615-00/?p=38873// lpCmdLine: define os argumentos de rede.// nCmdShow: um novo bom indicador que indica ou até mesmo atualmente a janela principal do aplicativo// parece realmente ser recolhido ou renderizado normalmente à primeira vista.//// Observe que você precisa usar _tWinMain para isso// faz o gerenciamento de conflitos de linha funcionar, ambos// com se você não definiu UNICODE e _UNICODE.int _tWinMain (hInstance d'apientry HINSTANCE, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)    mensagem MSG;    WNDCLASS mainWindowClass = 0;    // Você pode especificar qualquer nome para a janela principal, mas    // em todos os momentos alguém deve adicionar suas próprias classes de janela    // oferecendo algo que o torna mais único.    mainWindowClass.lpszClassName significa TEXT ("JRH.MainWindow");    mainWindowClass.hInstance é igual a hInstance;    mainWindowClass.hbrBackground equivale a GetSysColorBrush (COLOR_3DFACE);    mainWindowClass.lpfnWndProc = WndProc;    mainWindowClass.hCursor = LoadCursor (0, IDC_ARROW);    RegisterClass (& mainWindowClass);   // Notas:   // * O nome da classe define cada um dos nossos TYPE da janela. Não variação C.     // Este é um identificador (TCHAR *) através do qual muitos Windows usam internamente.    // - O nome da porta do olho é apenas processado devido ao fato do texto da janela, que é meio // frequentemente usado em relação a assinaturas, incluindo cabeçalho    // A barra do próprio indica.    // ParentHandle - considerado o "dono" entre eles    //   Janela. MessageBoxes podem usar HWND_MESSAGE para    // apaga-os causados ​​por qualquer tipo de janela.    // menuHandle: hMenu especifica algum tipo de id da janela subordinada,    // inteiro específico gosta de ser usado pelo diálogo    // Controle para notificar a futura mãe ou pai sobre eventos.    // O aplicativo define sua janela jovem    // identificador; então deve ser 1 dentro de todos    // janelas mais novas com a mesma janela pai.    // CreateWindow (windowClassName, windowName, style, xPos, yPos, largura, altura, parentHandle, menuHandle, instanceHandle, param);    CreateWindow (mainWindowClass.lpszClassName, Window "), mensagens de texto (" main WS_OVERLAPPEDWINDOW// Este código é totalmente baseado em material de vários médicos individuais, demonstre o código do tutorial junto com http://zetcode.com/gui/winapi/. 

Leitura complementar

O conjunto de escolas de vans de janela embutidas é bastante limitado, então você possivelmente ficará curioso sobre como definir corretamente suas aulas de janela privada (“ Control s”) usando algumas das APIs do Windows. veja os artigos abaixo:

  • Controles personalizados da API Win32: o básico (projeto de código)
  • O código-fonte do emulador WINE pode ser um bom exemplo importante de como exatamente a API do Windows pode ser aplicada e a maneira mais fácil de fazer com que sua janela receba classes que imitam o comportamento das classes internas específicas.
  • Manuais de Zetcode.com

NOTA. Eu originalmente escrevi um trabalho sobre como personalizar caixas de diálogo programaticamente. Devido a um erro específico na parte boa, ainda não foi claro para mim que a janela pode não ser necessariamente “exibida” como uma caixa de diálogo definida. Infelizmente, não consegui fazer a configuração mencionada por Chen Raymond funcionar. Mesmo olhando encontrado na fonte do VIN tornou-se realmente incompreensível.

Seu PC está dando problemas? Relaxe, há uma solução! Clique aqui para baixar.

Win32 Create Dialog Without Resource File
Win32 Dialoog Maken Zonder Bronbestand
Win32 Tworzy Okno Dialogowe Bez Pliku Zasobow
Win32 Crea Finestra Di Dialogo Senza File Di Risorse
Win32 Creer Une Boite De Dialogue Sans Fichier De Ressources
Win32 리소스 파일 없이 대화 상자 만들기
Win32 Skapa Dialog Utan Resursfil
Win32 Erstellungsdialog Ohne Ressourcendatei
Win32 Crear Dialogo Sin Archivo De Recursos
Dialogovoe Okno Sozdaniya Win32 Bez Fajla Resursov