// dialog.cpp : Defines the entry point for the application.
//#include "stdafx.h"
#include "resource.h"BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)DialogProc);
return 0;
}我用VC6.0新建了一个Win32应用程序,不使用MFC,然后添加了一个对话框资源,运行后并没有
显示对话框,这是怎么回事?该怎么修改?
//#include "stdafx.h"
#include "resource.h"BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)DialogProc);
return 0;
}我用VC6.0新建了一个Win32应用程序,不使用MFC,然后添加了一个对话框资源,运行后并没有
显示对话框,这是怎么回事?该怎么修改?
你要在WM_CREATE后在获得他的instance handle :
在 case WM_CREATE 后加入:
static HISTANCE hInstance ;
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;DialogBox(hInstance, LPCTSTR(IDD_DIALOG), hWnd, (DLGPROC)DialogProc );也就是说你在 main 函数中的DialogBox 是执行不成功的所以没有Dia出现,像我写的那样就可以显示dia了
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
static HINSTANCE hInstance ;
switch (message)
{
case WM_CREATE : {
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
DialogBox(hInst, MAKEINTRESOURCE(IDI_SMALL) , NULL, (DLGPROC)WndDialog1);
return 0;
}
#include <winsock.h>
#include "resource.h"LRESULT WINAPI WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndclass;
HWND hwnd;
MSG msg; wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon = NULL;
wndclass.hbrBackground= (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName= "SDK Window";
wndclass.lpszMenuName = NULL; RegisterClass(&wndclass); // Register window.
hwnd = CreateWindow("SDK Window",
"SDK",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}LRESULT WINAPI WndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
HINSTANCE hInstance;
switch(uMsg)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),hwnd, (DLGPROC)DialogProc);
break;
case WM_PAINT:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hwndDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
你把它改为下面的试#include "windows.h"
以前我都遇到过.
楼主试试这个程序,如果不行的话,那可能就是你的VC有问题了。