想在主窗口中建立一个按钮,编译连接都没错误,可运行后主窗口中始终是空空荡荡!代码如下:
#include<windows.h>
#define IDB_PUSHBUTTON 200
//#include<stdio.h>
HINSTANCE hInst1;
HWND hwndButton;LRESULT CALLBACK WndLiaoProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(
HINSTANCE hInst,
HINSTANCE hPreInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
WNDCLASS wcApp;
wcApp.lpszClassName="Yhong";
wcApp.hInstance=hInst;
wcApp.hCursor=LoadCursor(NULL,IDC_ARROW);
wcApp.hIcon=LoadIcon(hInst,IDI_APPLICATION);
wcApp.lpfnWndProc=WndLiaoProc;
wcApp.cbClsExtra=0;
wcApp.cbWndExtra=0;
wcApp.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcApp.lpszMenuName=NULL;
wcApp.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wcApp);
hInst1=hInst; HWND hWnd;
hWnd=CreateWindow("Yhong","Yhong",WS_OVERLAPPEDWINDOW&~WS_MAXIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,600,400,
NULL,NULL,hInst,NULL);
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG lpMsg;
while(GetMessage(&lpMsg,NULL,0,0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return(0);
}LRESULT CALLBACK WndLiaoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc; switch (message)
{
case WM_CREATE:
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
#include<windows.h>
#define IDB_PUSHBUTTON 200
//#include<stdio.h>
HINSTANCE hInst1;
HWND hwndButton;LRESULT CALLBACK WndLiaoProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(
HINSTANCE hInst,
HINSTANCE hPreInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
WNDCLASS wcApp;
wcApp.lpszClassName="Yhong";
wcApp.hInstance=hInst;
wcApp.hCursor=LoadCursor(NULL,IDC_ARROW);
wcApp.hIcon=LoadIcon(hInst,IDI_APPLICATION);
wcApp.lpfnWndProc=WndLiaoProc;
wcApp.cbClsExtra=0;
wcApp.cbWndExtra=0;
wcApp.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcApp.lpszMenuName=NULL;
wcApp.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wcApp);
hInst1=hInst; HWND hWnd;
hWnd=CreateWindow("Yhong","Yhong",WS_OVERLAPPEDWINDOW&~WS_MAXIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,600,400,
NULL,NULL,hInst,NULL);
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG lpMsg;
while(GetMessage(&lpMsg,NULL,0,0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return(0);
}LRESULT CALLBACK WndLiaoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc; switch (message)
{
case WM_CREATE:
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
解决方案 »
- 来一个简单问题?
- UDP编程一个超怪异的问题。
- 关于多进程调用同一个DLL,模块句柄问题
- 新手问题,怎样得到edit控件的值
- 怎么回事呀?求救中 !
- 如何让一个MFC的程序后台运行,我只要一开机就后台运行就可以了。请各位大侠指点,最好详细点,谢谢。
- 如何给TabCtrl选项上添加图标?
- 关于outlook问题...
- 我在VC6中用ADO操作数据库,需要插入大量数据,除了RecorsetPtr->AddNew()还有别的更好的办法么
- 请教:WSASend (5) failed with error 这样报错怎么解决?
- 高手来帮我给这段代码解释一下!谢谢!散分了!~
- 自己做的Activex控件如何同外部程序交换 数据??
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
移到WM_CREATE:后也不行呀!
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,400,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
改为
hwndButton=CreateWindow("Button","按钮控件!",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
20,100,240,25,hWnd,(HMENU)IDB_PUSHBUTTON,hInst1,NULL);
控钮就出来了!
可是窗口大小改变后,按钮又消失了,难道要将上面的语句放在WM_PAINT后吗?
将ShowWindow语句放在WM_PAINT后问题就解决了!可是当建立一个DateTimePicker控件时上面的问题又来了!
case WM_CREATE:
hwndDate=CreateWindow("DATETIMEPICK_CLASS",
"DateTime!",
WS_BORDER|WS_CHILD|WS_VISIBLE,
20,180,80,25,
hWnd,
(HMENU)IDB_DATETIME,
hInst1,NULL);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
ShowWindow(hwndDate,SW_SHOW);
EndPaint(hWnd, &ps);
break;没有出错信息,也没有控件显示出来!