对话框我也是按书上手动设计的 可就是运行成功窗口不出来?
书上说要加这个文件hexcalc.dlg加了 运行时说无法打开这个文件?? 截图在下面,,
代码如下:
#include"stdafx.h"
#include"WIN.h"
void ShowNumber(HWND hwnd,UINT iNumber)
{
TCHAR szBuffer[20];
wsprintf(szBuffer,TEXT("%X"),iNumber);
SetDlgItemText(hwnd,VK_ESCAPE,szBuffer);
}
DWORD CalcIt(UINT iFirstNum,int iOperation, UINT iNum)
{
switch(iOperation)
{
case '=': return iNum;
case '+': return iFirstNum+iNum;
case '*': return iFirstNum*iNum;
case '/': return iNum?iFirstNum/iNum:MAXDWORD;
case'-': return iFirstNum-iNum;
case '|': return iFirstNum|iNum;
case '^': return iFirstNum^iNum;
case '<': return iFirstNum<<iNum;
case '>': return iFirstNum>>iNum;
case '&': return iFirstNum&iNum;
case '%': return iNum?iFirstNum%iNum:MAXDWORD;
default:
return 0;
}
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static BOOL bNewNumber=TRUE;
static int iOperaion='=';
static UINT iNumber,iFirstNum;
HWND hButton;
switch(message)
{
case WM_KEYDOWN:
if(wParam!=VK_LEFT)
break;
wParam=VK_BACK;
case WM_CHAR:
if((wParam=(WPARAM)CharUpper((TCHAR*)wParam))==VK_RETURN)
wParam='=';
if(hButton=GetDlgItem(hwnd,wParam))
{
SendMessage(hButton,BM_SETSTATE,1,0);
Sleep(100);
SendMessage(hButton,BM_SETSTATE,0,0);
}
else
{
MessageBeep(0);
break;
}
case WM_COMMAND:
SetFocus(hwnd);
if(LOWORD(wParam)==VK_BACK)
ShowNumber(hwnd,iNumber/=16);
else
if(LOWORD(wParam)==VK_ESCAPE)
ShowNumber(hwnd,iNumber=0);
else
if(isxdigit(LOWORD(wParam)))
{ if(bNewNumber)
{
iFirstNum=iNumber;
iNumber=0;
}
bNewNumber=FALSE;
if(iNumber<=MAXDWORD>>4)
ShowNumber(hwnd,iNumber=16*iNumber+wParam-(isdigit(wParam)?'0':'A'-10));
else
MessageBeep(0);
}
else
{
if(!bNewNumber)
ShowNumber(hwnd,iNumber=CalcIt(iFirstNum,iOperaion,iNumber));
bNewNumber=TRUE;
iOperaion=LOWORD(wParam);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPvec,PSTR szCmd,int iCmd)
{
static TCHAR szAppName[]=TEXT("FUJIE");
MSG msg;
HWND hwnd;
WNDCLASS w;
w.style=CS_HREDRAW|CS_VREDRAW;
w.lpfnWndProc=WndProc;
w.cbClsExtra=0;
w.cbWndExtra=DLGWINDOWEXTRA;
w.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
w.hCursor=LoadCursor(NULL,IDC_ARROW);
w.hIcon=LoadIcon(hInstance,szAppName);
w.hInstance=hInstance;
w.lpszClassName=szAppName;
w.lpszMenuName=NULL;
if(!RegisterClass(&w))
{
MessageBox(NULL,TEXT("窗口注册错误"),szAppName,MB_OK);
return 0;
}
hwnd=CreateDialog(hInstance,szAppName,0,NULL);
if(hwnd==NULL)
{
MessageBox(NULL,TEXT("对话框加载失败"),szAppName,MB_OK);
}
ShowWindow(hwnd,iCmd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}