控制台下能否调用WebBrowse控件?

test_2012_12 2013-01-15 11:09:20
//用下面的代码调用WebBrowse控件,创建对象的时候报错	

CoInitialize(NULL);
HWND h = FindWindow("ConsoleWindowClass", NULL);

CWebBrowser2 test;
test.Create("test", WS_CHILD|WS_VISIBLE, CRect(0,0,100,100), CWnd::FromHandle(h), 123);
//test.Navigate("www.baidu.cn", NULL, NULL, NULL,NULL);
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
test_2012_12 2013-01-15
  • 打赏
  • 举报
回复
是不是不应该使用Create窗体啊 ?
oyljerry 2013-01-15
  • 打赏
  • 举报
回复
需要窗口支持等
test_2012_12 2013-01-15
  • 打赏
  • 举报
回复
#include <windows.h>
#include <stdio.h>
HWND ghMainWnd = 0;

bool InitWindowsApp(HINSTANCE instanceHandle, int show);
int  Run();
LRESULT CALLBACK CALLBACKWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd)
{
	if(!InitWindowsApp(hInstance, nShowCmd))
	{
		return 0;
	}	
	return Run();
}

bool InitWindowsApp(HINSTANCE instanceHandle, int show)
{
	WNDCLASS wc;    
	wc.style         = CS_HREDRAW | CS_VREDRAW;   
	wc.lpfnWndProc   = CALLBACKWndProc;    
	wc.cbClsExtra    = 0;    
	wc.cbWndExtra    = 0;    
	wc.hInstance     = instanceHandle;		
	wc.hIcon         = LoadIcon(0, IDI_APPLICATION);   
	wc.hCursor       = LoadCursor(0, IDC_ARROW);   
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   
	wc.lpszMenuName  = 0;   
	wc.lpszClassName = "BasicWndClass";
	
	if(!RegisterClass(&wc))   
	{       
		MessageBox(0, "RegisterClass FAILED", 0, 0);        
		return false;   
	}
	
	ghMainWnd = CreateWindow(        
		"BasicWndClass",     
		"Win32Basic",               
		WS_OVERLAPPEDWINDOW,         
		CW_USEDEFAULT,               
		CW_USEDEFAULT,               
		CW_USEDEFAULT,             
		CW_USEDEFAULT,        
		0,                          
		0,                          
		instanceHandle,              
		0);                   
	
    if(ghMainWnd == 0)    
	{      
		MessageBox(0, "CreateWindow FAILED", 0, 0);       
		return false;    
	}
	
	ShowWindow(ghMainWnd, show);    
	UpdateWindow(ghMainWnd);   
	return true;
}

int Run()
{    
	MSG msg = {0};
	
	BOOL bRet = 1;    
	while((bRet = GetMessage(&msg, 0, 0, 0)) != 0 )
	{       
		if(bRet == -1)        
		{          
			MessageBox(0, "GetMessage FAILED", "Error", MB_OK);           
			break;      
		}  		
		else      
		{           
			TranslateMessage(&msg);           
			DispatchMessage(&msg);      
		}  		
	}   
	return (int)msg.wParam;
}

LRESULT CALLBACK CALLBACKWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch( msg )    
	{
	case WM_LBUTTONDOWN:       
		MessageBox(0, "Hello, World", "Hello", MB_OK);        
		return 0;
		
	case WM_KEYDOWN:        
		if( wParam == VK_ESCAPE )           
			DestroyWindow(ghMainWnd);       
		return 0;
		
	case WM_DESTROY:        
					   PostQuitMessage(0);        
					   return 0;    
	}
	
	return DefWindowProc(hWnd, msg, wParam, lParam);
}
test_2012_12 2013-01-15
  • 打赏
  • 举报
回复
#include <windows.h>
HWND ghMainWnd = 0;

bool InitWindowsApp(HINSTANCE instanceHandle, int show);
int  Run();
LRESULT CALLBACKWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPIWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd)
{
	if(!InitWindowsApp(hInstance, nShowCmd))
	{
		return 0;
	}	
	return Run();
}

bool InitWindowsApp(HINSTANCE instanceHandle, int show)
{
	WNDCLASS wc;    
	wc.style         = CS_HREDRAW | CS_VREDRAW;   
	wc.lpfnWndProc   = CALLBACKWndProc;    
	wc.cbClsExtra    = 0;    
	wc.cbWndExtra    = 0;    
	wc.hInstance     = instanceHandle;		
	wc.hIcon         = LoadIcon(0, IDI_APPLICATION);   
	wc.hCursor       = LoadCursor(0, IDC_ARROW);   
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   
	wc.lpszMenuName  = 0;   
	wc.lpszClassName = "BasicWndClass";
	
	if(!RegisterClass(&wc))   
	{       
		MessageBox(0, "RegisterClass FAILED", 0, 0);        
		return false;   
	}
	
	ghMainWnd = CreateWindow(        
		"BasicWndClass",     
		"Win32Basic",               
		WS_OVERLAPPEDWINDOW,         
		CW_USEDEFAULT,               
		CW_USEDEFAULT,               
		CW_USEDEFAULT,             
		CW_USEDEFAULT,        
		0,                          
		0,                          
		instanceHandle,              
		0);                   
	
    if(ghMainWnd == 0)    
	{      
		MessageBox(0, "CreateWindow FAILED", 0, 0);       
		return false;    
	}
	
	ShowWindow(ghMainWnd, show);    
	UpdateWindow(ghMainWnd);   
	return true;
}

int Run()
{    
	MSG msg = {0};
	
	BOOL bRet = 1;    
	while( (bRet = GetMessage(&msg, 0, 0, 0)) != 0 )
	{       
		if(bRet == -1)        
		{          
			MessageBox(0, "GetMessage FAILED", "Error", MB_OK);           
			break;      
		}  		
		else      
		{           
			TranslateMessage(&msg);           
			DispatchMessage(&msg);      
		}   
	}   
	return (int)msg.wParam;
}

LRESULT CALLBACKWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch( msg )    
	{
	case WM_LBUTTONDOWN:       
		MessageBox(0, "Hello, World", "Hello", MB_OK);        
		return 0;
		
	case WM_KEYDOWN:        
		if( wParam == VK_ESCAPE )           
			DestroyWindow(ghMainWnd);       
		return 0;
		
	case WM_DESTROY:        
					   PostQuitMessage(0);        
					   return 0;    
	}
	
	return DefWindowProc(hWnd, msg, wParam, lParam);
}
jimette 2013-01-15
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/jonfoo_W/3097027

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧