我正在尝试继续开发智能手机的应用程序(我对Android有一点经验).我做了一些深入的研究,我决定开始在Qt C++中创建应用程序.
我这样做的原因是因为根据我的研究,我似乎可以在Qt编写一个应用程序,然后我要做的就是在iPhone,Android,Symbian和Windows Mobile上编译它然后我将有一个可以工作的应用程序在所有这些平台上.
我的问题是:我是否正确如果我在Qt C++中编写应用程序,那么它将适用于以下平台:Android,iPhone,Symbian和Windows Mobile?
我知道这是一个天真的问题("我可以使用什么API在所有平台上工作")但我已经研究了很多,他们似乎都说Qt可以在所有这些平台上运行.
PS,使用Qt编写跨平台手机应用程序是否有任何缺点?编译Qt应用程序代码难以在每个平台上进行吗?
我很困惑.NET究竟是什么.我是一名计算机科学专业的学生,他用C++完成了很多Win32(WinAPI)编程,并且非常了解Win32函数如何与COM和Windows内核本身进行交互.
但.NET在哪里适合所有这些?
具体来说,如果Win32是用C编写的API,那么什么是.NET?它是用C编写的API吗?它只能在像Win32这样的Windows操作系统上运行吗?
.NET是否运行在Win32 API之上?例如,一个.NET函数showWindow()(显然我明白了)在后台调用Win32函数来显示窗口,还是直接调用内核来执行此操作?或者.NET是否像Java虚拟机一样?
.NET是否直接与Windows内核交互(如Win32)并与COM对象交互?.NET是否在沙箱中运行并且不允许某些操作系统访问某些操作系统区域?
我可以使用Win32 API(如c/c ++,VB,Perl)编写不同语言的代码.我可以在.NET中编写哪些语言?
这真的让我很难过.我听说用.NET编写的Web应用程序?什么,怎么样,哇?用什么语言写的?.NET是否运行在IE之上?.NET Web应用程序可以在Firefox或Safari(MacOS)上运行吗?像.NET applet这样的.NET Web应用程序,你是否也得到了.NET驱动程序.
我有2个C++类问题:
第一个问题是:我怎么能这样做,所以我可以将类成员函数作为参数传递给另一个函数?如何运行/调用该函数?我怎么能用类静态函数做同样的事情.通过查看此代码可能更容易理解我的问题:
class DebuggingManager
{
string testLog;
bool test1()
{
// run test & return whether it passed or failed
}
static bool test2()
{
}
// How can I call a member function?
void catalogueTest( string testName, bool DebuggingManager::*nMemberFunction )
{
testLog += "Status of " + testName + ": " + ((*)nMemberFunction()) + "\n";
}
// How can I call a static function?
void catalogueTest( string testName, bool DebuggingManager::*nStaticFunction )
{
testLog += "Status of " + testName …Run Code Online (Sandbox Code Playgroud) 任何用户都可以访问%APPDATA%文件夹吗?或者只有管理员才能读取和访问该目录?此外,访问此目录的权限在不同的Windows平台上是否有所不同,从2k到Windows 7?
我正在尝试创建一个Container类,我可以通过使用该对象成员变量作为其标识符从容器中检索对象.但我得到一个编译错误,因为我试图存储指针(?)/引用对象成员变量
template <typename Object>
class Container
{
private:
template <typename dataType>
dataType Object::* memberVariable; // error here "data member 'memberVariable' cannot be a member template"
template <typename dataType>
std::map <dataType, Object*> instanceVarMap; // what would be more efficient; a Map or unordered_map? I heard that
std::map <unsigned int, Object*> instanceIntMap; // ...unordered_maps use more memory & Maps are better when integers are the keys
public;
template <typename dataType>
Collection( dataType Object::*nMemberVariable )
{
memberVariable = nMemberVariable;
}
template <typename …Run Code Online (Sandbox Code Playgroud) 我想让我的Win32 C++应用程序能够在任何编码版本(UNICODE和ANSI)上播放.现在我有点困惑的是两个(或更多?)编码之间到底有什么区别?
为了使我的Win32应用程序交叉编码兼容,这意味着我必须通过我的代码并用std :: wstring替换每个std :: string,然后用 wchar_t*替换每个char,然后替换每个文字字符串("")用L""?
如果我的应用程序在UNICODE机器上运行并且我的应用程序中有一个std :: string会发生什么?
对于我的应用程序交叉编码兼容所需的步骤,您有什么建议吗?例如: - 将所有c_strings和字符串更改为其UNICODE等效项 - 将任何Win32函数更改为uncide版本(例如,从getenv()更改为_wgetenv())
注册表项和环境变量有什么区别?
我认为环境变量只能在 Windows 操作系统中找到?我听说改变这些很容易,所以相信它们不好?注册表项是否很容易更改?
注册表项是否存储在内核中?
我最重要的问题是:我知道环境变量让我知道%APPDATA的路径、当前用户名、程序文件的路径、运行的Windows操作系统的版本等。但是注册表项也包含这种类型吗?数据 - 我也可以通过查看注册表项找到此信息吗?
请参阅编辑,并提供迄今为止的建议......
我试图使用WinAPI和C++列出给定目录中的所有目录(文件夹).
现在我的算法速度慢且效率低:
- 使用FindFirstFileEx()打开我正在搜索的文件夹
- 然后查看目录中的每个文件(使用FindNextFile()); 如果它是一个目录文件,那么我将其绝对路径存储在一个向量中,如果它只是一个文件我什么也不做.
这看起来非常低效,因为我正在查看目录中的每个文件.
编辑: 所以在采取了我使用FindExSearchLimitToDirectories搜索的建议后,但对我来说它仍然打印出所有文件(.txt等)而不仅仅是文件夹.难道我做错了什么?
WIN32_FIND_DATA dirData;
HANDLE dir = FindFirstFileEx( "c:/users/soribo/desktop\\*", FindExInfoStandard, &dirData,
FindExSearchLimitToDirectories, NULL, 0 );
while ( FindNextFile( dir, &dirData ) != 0 )
{
printf( "FileName: %s\n", dirData.cFileName );
}
Run Code Online (Sandbox Code Playgroud) 您好,我正在 win32 中创建一个应用程序,无论鼠标位于何处(在我的应用程序客户端/NC 区域内和外部),它都会显示鼠标的 x、y 位置(在屏幕坐标中)。
我正处于想要检测鼠标何时完全离开我的应用程序的阶段。我编写了一个简单的 win32 应用程序,它应该在鼠标离开我的应用程序时检测并通知自己,但它不起作用,我从未收到消息 WM_MOUSELEAVE 和 WM_NCMOUSELEAVE。
你觉得哪里不对?我是否使用了错误的 win32 函数?
// Track Mouse.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include <windows.h>
#include <vector>
#include <string>
#include <cstdlib>
static HINSTANCE gInstance;
// Globals //
enum MouseStatus { DEFAULT = 50001, LEFT_CLIENT, LEFT_NCLIENT };
static MouseStatus mouseState = DEFAULT;
static COLORREF bkCol = RGB(0,255,255);
// Functions List //
BOOL TrackMouse( HWND hwnd )
{
// Post:
TRACKMOUSEEVENT mouseEvt;
ZeroMemory( &mouseEvt, sizeof(TRACKMOUSEEVENT) ); …Run Code Online (Sandbox Code Playgroud) 我有这个编译错误,我不明白什么是错的.我的Microsoft Visual Studio项目是一个Win32项目(而不是控制台):
1>MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
1>C:\Users\Soribo\Desktop\C++ Programming\Visual C++ Programming\KeyboardHook\Release\KeyboardHook.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)
编辑:将#include"stdafx.h"作为第1行后编译错误是:
1>MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
1>C:\Users\Soribo\Desktop\C++ Programming\Visual C++ Programming\KeyboardHook\Release\KeyboardHook.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)
编辑:嗯,我已经定义了WinMain功能有没有我?见下面的代码:
/*
Application:
*/
#include <windows.h>
#include <cstdlib>
#include "stdafx.h"
using namespace std;
static HHOOK keyboardHook;
static HINSTANCE gInstance;
// Functions List //
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK LowLevelKeyboardProc( int nCode, …Run Code Online (Sandbox Code Playgroud)