win32的一个菜鸟问题,WM_CREATE的。谢谢
先贴源代码#include<windows.h>#include<stdio.h>LRESULTCALLBACKWinPro(HWNDhWnd,UINTuMsg,WPAR...
先贴源代码
#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//设计一个窗口
WNDCLASS wndClass;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor = LoadCursor(hInstance,IDC_CROSS);
wndClass.hIcon = LoadIcon(hInstance,IDI_ERROR);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinPro;
wndClass.lpszClassName = "ClassName";
wndClass.lpszMenuName = "MenuName";
wndClass.style = CS_HREDRAW | CS_VREDRAW;
//注册窗口
RegisterClass(&wndClass);
//创建窗口
HWND hWnd;
hWnd = CreateWindow("ClassName","WindowName",WS_OVERLAPPEDWINDOW,0,0,300,300,NULL,NULL,hInstance,NULL);
//显示和刷新窗口
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//定义消息结构体,开始消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
switch(uMsg)
{
//为什么此处,我在WM_CREATE中创建的文本,无法显示呢????
case WM_CREATE:
hDC = GetDC(hWnd);
TextOut(hDC,20,20,"CREATE",strlen("CREATE"));
ReleaseDC(hWnd,hDC);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd,&ps);
TextOut(hDC,40,40,"PAINT",strlen("PAINT"));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
但是,为什么我在WM_CREATE中的TextOut的文本,无法显示呢???
好怪异。。。。。
谢谢各位了哈!
我是用的VC 6 哈。
被覆盖了?那,应该怎么改呢???? 展开
#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//设计一个窗口
WNDCLASS wndClass;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor = LoadCursor(hInstance,IDC_CROSS);
wndClass.hIcon = LoadIcon(hInstance,IDI_ERROR);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinPro;
wndClass.lpszClassName = "ClassName";
wndClass.lpszMenuName = "MenuName";
wndClass.style = CS_HREDRAW | CS_VREDRAW;
//注册窗口
RegisterClass(&wndClass);
//创建窗口
HWND hWnd;
hWnd = CreateWindow("ClassName","WindowName",WS_OVERLAPPEDWINDOW,0,0,300,300,NULL,NULL,hInstance,NULL);
//显示和刷新窗口
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//定义消息结构体,开始消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WinPro(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
switch(uMsg)
{
//为什么此处,我在WM_CREATE中创建的文本,无法显示呢????
case WM_CREATE:
hDC = GetDC(hWnd);
TextOut(hDC,20,20,"CREATE",strlen("CREATE"));
ReleaseDC(hWnd,hDC);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd,&ps);
TextOut(hDC,40,40,"PAINT",strlen("PAINT"));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
但是,为什么我在WM_CREATE中的TextOut的文本,无法显示呢???
好怪异。。。。。
谢谢各位了哈!
我是用的VC 6 哈。
被覆盖了?那,应该怎么改呢???? 展开
3个回答
展开全部
我把你代码拿来调试了下。
你应该不是根据向导来生成的这个console程序。
个人认为,在console程序里面设计,注册,创建,显示窗口,它创建窗口应该不是响应WM_CREATE消息,不像是在MFC程序。
你可以查查相关资料。
关于console程序的WM_CREATE
你应该不是根据向导来生成的这个console程序。
个人认为,在console程序里面设计,注册,创建,显示窗口,它创建窗口应该不是响应WM_CREATE消息,不像是在MFC程序。
你可以查查相关资料。
关于console程序的WM_CREATE
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103R8T6是ST旗下的一款常用的增强型系列微控制器,是一款基于ARM Cortex-M内核的微控制器。STM32F103R8T6主要面向消费类电子产品、工业控制、医疗仪器、汽车电子等领域,可用于开发各种类型的应用。STM32...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
是窗口显示的时候重画被覆盖了
用位图保存起来,在处理WM_PAINT消息的时候把位图画到窗口
用位图保存起来,在处理WM_PAINT消息的时候把位图画到窗口
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼所说的正确!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询